Ana içeriğe geç

JWT tabanlı kimlik doğrulama

Patrona'yı, kişilerin kimliğini doğrulamak için JSON Web Token'ları (JWT) kullanarak kimlik sağlayıcınıza bağlayabilirsiniz.

Kimlik doğrulama akışları

Patrona, JWT ile kullanılabilecek iki kimlik doğrulama akışını destekler:

  • Yetkilendirme Kodu Akışı
  • PKCE ile Yetkilendirme Kodu Akışı

Patrona'nın kimlik doğrulama akışları, OAuth 2.0'dan sonra modellenmiş özel iş akışlarıdır. İsteğe bağlı olarak oluşturulan rastgele anahtarları dahil etmek için PKCE ile kimlik doğrulama akışını kullanabilirsiniz.

Şu anda Patrona'nın desteklediği tek algoritma HS256 (HMAC + SHA-256).

Patrona ile JWT tabanlı bir SSO etkileşimi için tipik akış

Sitenizin 3000 portunda hizmet veren localhost olduğunu varsayalım:

  1. Kişi bir soruyu görüntülemeye çalışır, örneğin http://localhost:3000/question/1-superb-question.
  2. Kişi oturum açmamışsa, Patrona onları http://localhost:3000/auth/sso adresine yönlendirir.
  3. Orijinal /question/1-superb-question URI'sini koruyarak, Patrona kişiyi SSO sağlayıcısına (kimlik doğrulama uygulaması) yönlendirir.
  4. Kişi temel formu kullanarak oturum açar.
  5. Başarılı bir oturum açma durumunda, kimlik doğrulama uygulamanız, belirteç ve "geri dön" URI'si ile Patrona uç noktanıza bir GET isteği göndermelidir: http://localhost:3000/auth/sso?jwt=TOKEN_GOES_HERE&return_to=/question/1-superb-question.
  6. Patrona, JSON Web Token'ı doğrular, kişinin oturumunu açar ve ardından kişiyi orijinal hedefine, /question/1-superb-question adresine yönlendirir.

JWT kimlik doğrulamasını etkinleştirme

Yönetici > Ayarlar bölümüne gidin, ardından Kimlik Doğrulama sekmesine tıklayın. Bu sayfanın JWT bölümündeki Yapılandır butonunu tıklayın ve şu formu göreceksiniz:

JWT form

İşte her ayarın dökümü:

JWT Kimlik Sağlayıcı URI'si: Patrona'nın oturum açma isteklerini yönlendireceği yerdir. Yani, kullanıcılarınızın kimlik sağlayıcınız aracılığıyla oturum açmak için gittikleri yerdir.

JWT İmzalama Anahtarı Tarafından Kullanılan Dize: JWT mesajlarını doğrulamak için kullanılan özel anahtarı tohumlamak için kullanılan dize. Hem Patrona hem de kimlik doğrulama uygulaması aynı JWT imzalama anahtarına sahip olmalıdır.

Kullanıcı özniteliği yapılandırması (isteğe bağlı)

Bunlar, kullanıcı özniteliklerini Patrona'ya geçirmek için doldurabileceğiniz ek ayarlardır.

  • E-posta özniteliği: Her JWT kullanıcısının e-posta adresini almak için anahtar.
  • Ad özniteliği: Her JWT kullanıcısının adını almak için anahtar.
  • Soyadı özniteliği: Eğer bunun her JWT kullanıcısının soyadını almak için anahtar olduğunu tahmin ettiyseniz, o zaman dikkatli davranıyorsunuz demektir.

JWT'nize anahtar/değer çiftleri olarak öznitelikler ekleyerek Patrona'ya ek kullanıcı öznitelikleri gönderebilirsiniz. Bu öznitelikler her oturum açmada senkronize edilecektir.

Grup eşlemelerini yapılandırma

JWT'nizi kullanarak Patrona kullanıcılarını özel gruplara atayabilirsiniz.

  1. JWT'nize gruplar ekleyin: groups: ["group_name"].
  2. Patrona'da, Yönetici paneline gidin ve Ayarlar > Kimlik Doğrulama sekmesine geçin.
  3. JWT altında Yapılandır butonunu tıklayın.
  4. Grup Şeması altında, Grup Üyeliklerini Senkronize Et butonunu açın.
  5. Yeni eşleme'ye tıklayın ve bir JWT grubu adı ekleyin.
  6. Görünen satırda, bunun eşlenmesi gereken Patrona grubu(larını) seçmek için açılır menüyü tıklayın. Patrona JWT group mappings
  7. Eşlemek istediğiniz her grup için bunu tekrarlayın.

Alternatif olarak, JWT ve Patrona grupları arasındaki eşlemeleri ortam değişkeni MB_JWT_GROUP_MAPPINGS kullanarak tanımlayabilirsiniz. Anahtarların JWT grupları ve değerlerin Patrona grupları kimliklerinin listeleri olduğu bir JSON nesnesi kabul eder. Örneğin:

MB_JWT_GROUP_MAPPINGS='{"extHR":[7], "extSales":[3,4]}'

extHR, extSales JWT gruplarının adları ve 3,4,7 Patrona gruplarının kimlikleridir.

Patrona Grup Kimliğini, grup sayfasının URL'sinde bulabilirsiniz, örneğin http://your-patrona-url/admin/people/groups/<ID>. "Tüm Kullanıcılar" grubu 1 kimliğine ve "Yöneticiler" grubu 2 kimliğine sahiptir.

Grup senkronizasyonunu açmak veya kapatmak için ortam değişkeni MB_JWT_GROUP_SYNC kullanabilirsiniz.

MB_JWT_GROUP_SYNC=true

SSO ile Patrona hesapları oluşturma

Ücretli planlar her ek hesap için ücret alır.

Yeni bir SSO oturumu açma, otomatik olarak yeni bir Patrona hesabı oluşturacaktır.

Dış kimlik sağlayıcı oturumu ile oluşturulan Patrona hesaplarının parolaları yoktur. Bir IdP kullanarak Patrona'ya kaydolan kişiler, Patrona'ya giriş yapmak için IdP'yi kullanmaya devam etmelidir.

Parola oturumlarını devre dışı bırakma

Patrona'nızdan kendinizi kilitlemekten kaçının! Bu ayar tüm Patrona hesapları için geçerli olacaktır, Patrona yönetici hesabınız da dahil. Parola kimlik doğrulamayı etkin tutmanızı öneririz. Bu, SSO ile ilgili herhangi bir sorun durumunda Patrona'dan kilitlenmenizi önleyecektir.

Kişilerin SSO ile oturum açmasını zorunlu kılmak için Yönetici ayarları > Kimlik Doğrulama bölümünden parola kimlik doğrulamayı devre dışı bırakın.

Password disable

Azure hakkında not

Azure kullanıyorsanız, Azure AD B2C kullanmanız gerekebilir. Jetonlar genel bakış sayfasına göz atın.

JWT tabanlı kimlik doğrulama kullanan örnek kod

JWT kimlik doğrulamasını kullanan örnek kodu SSO örnekleri deposunda bulabilirsiniz.