Aracılığıyla paylaş


MSAL'de desteklenen kimlik doğrulama akışları

Microsoft Authentication Library (MSAL), farklı uygulama türleri ve senaryolar tarafından kullanılmak üzere çeşitli yetkilendirme izinlerini ve ilişkili belirteç akışlarını destekler.

Kimlik doğrulama akışı Sağ -lar Desteklenen uygulama türleri
Yetkilendirme kodu Kullanıcı adına oturum açma ve web API'lerine erişme. * Masaüstü
* Mobil
* Tek sayfalı uygulama (SPA) (PKCE gerektirir)
* Web
İstemci kimlik bilgileri Uygulamanın kimliğini kullanarak web API'lerine erişim. Genellikle sunucudan sunucuya iletişim ve kullanıcı etkileşimi gerektirmeden otomatik betikler için kullanılır. Daemon
Cihaz kodu Akıllı TV'ler ve Nesnelerin İnterneti (IoT) cihazları gibi giriş kısıtlanmış cihazlarda kullanıcı adına kullanıcı oturum açma ve web API'lerine erişim. Komut satırı arabirimi (CLI) uygulamaları tarafından da kullanılır. Masaüstü, Mobil
Örtük hibe Kullanıcı adına oturum açma ve web API'lerine erişim. Örtük verme akışı artık önerilmez. Bunun yerine Kod Değişimi için Proof Key (PKCE) ile yetkilendirme kodu kullanın. * Tek sayfalı uygulama (SPA)
* Web
Adına (OBO) Kullanıcı adına "yukarı akış" web API'sinden "aşağı akış" web API'sine erişim. Kullanıcının kimliği ve temsilci izinleri yukarı akış API'sinden aşağı akış API'sine geçirilir. Web API'si
Kullanıcı adı/parola (ROPC) Bir uygulamanın parolasını doğrudan işleyerek kullanıcıda oturum açmasına izin verir. ROPC akışı önerilmez. Masaüstü, Mobil
Tümleşik Windows kimlik doğrulaması (IWA) Etki alanına veya Microsoft Entra ID'ye katılmış bilgisayarlardaki uygulamaların sessizce belirteç almasına izin verir (kullanıcıdan herhangi bir kullanıcı arabirimi etkileşimi olmadan). Masaüstü, Mobil

Belirteçler

Uygulamanız bir veya daha fazla kimlik doğrulama akışı kullanabilir. Her akış kimlik doğrulaması, yetkilendirme ve belirteç yenileme için belirli belirteç türlerini ve bazıları da yetkilendirme kodunu kullanır.

Kimlik doğrulama akışı veya eylemi Şunları gerektirir Kimlik belirteci Erişim belirteci Yenileme belirteci Yetki kodu
Yetkilendirme kodu akışı
İstemci kimlik bilgileri ✅ (yalnızca uygulama)
Cihaz kodu akışı
Örtük akış
On-behalf-of akışı Erişim belirteci
Kullanıcı adı/parola (ROPC) Kullanıcı adı, parola
Karma OIDC akışı
Yenileme belirteci kullanım Yenileme belirteci

Etkileşimli ve etkileşimli olmayan kimlik doğrulaması

Bu akışlardan birkaçı hem etkileşimli hem de etkileşimli olmayan belirteç alımını destekler.

  • Etkileşimli - Kullanıcıdan yetkilendirme sunucusu tarafından giriş istenebilir. Örneğin, oturum açmak, çok faktörlü kimlik doğrulaması (MFA) gerçekleştirmek veya daha fazla kaynak erişimi izni vermek için.
  • Etkileşimli değil - Kullanıcıdan giriş istenmeyebilir . Sessiz belirteç alma olarak da adlandırılan uygulama, yetkilendirme sunucusunun kullanıcıdan giriş istemeyebileceği bir yöntem kullanarak belirteç almaya çalışır.

MSAL tabanlı uygulamanız önce sessizce bir belirteç almayı denemeli ve yalnızca etkileşimli olmayan girişim başarısız olursa etkileşimli yönteme geri dönmelidir. Bu düzen hakkında daha fazla bilgi için bkz . Microsoft Authentication Library (MSAL) kullanarak belirteçleri alma ve önbelleğe alma.

Yetki kodu

OAuth 2.0 yetkilendirme kodu verme, web API'leri gibi korumalı kaynaklara erişim kazanmak için web uygulamaları, tek sayfalı uygulamalar (SPA) ve yerel (mobil ve masaüstü) uygulamalar tarafından kullanılabilir.

Kullanıcılar web uygulamalarında oturum açarken, uygulama web API'lerini çağırmak için erişim belirteci için kullanabileceği bir yetkilendirme kodu alır.

Yetkilendirme kodu akışı diyagramı

Yukarıdaki diyagramda uygulama:

  1. Erişim belirteci için kullanılan bir yetkilendirme kodu istemektedir.
  2. Erişim belirtecini kullanarak Microsoft Graph gibi bir web API'sini çağırır.

Yetkilendirme kodu kısıtlamaları

  • Tek sayfalı uygulamalar, yetkilendirme kodu verme akışını kullanırken Kod Değişimi (PKCE) için Proof Key gerektirir. PKCE, MSAL tarafından desteklenir.

  • OAuth 2.0 belirtimi, erişim belirtecini yalnızca bir kez kullanmak için yetkilendirme kodu kullanmanızı gerektirir.

    Aynı yetkilendirme koduyla birden çok kez erişim belirteci almaya çalışırsanız, Microsoft kimlik platformu aşağıdakine benzer bir hata döndürülür. Bazı kitaplıkların ve çerçevelerin sizin için otomatik olarak yetkilendirme kodu istemesi ve bu gibi durumlarda el ile kod istemenin de bu hataya neden olacağını unutmayın.

    AADSTS70002: Error validating credentials. AADSTS54005: OAuth2 Authorization code was already redeemed, please retry with a new valid code or use an existing refresh token.

İstemci kimlik bilgileri

OAuth 2 istemci kimlik bilgileri akışı, web'de barındırılan kaynaklara bir uygulamanın kimliğini kullanarak erişmenizi sağlar. Bu tür bir izin, bir kullanıcıdan hemen etkileşim olmadan arka planda çalışması gereken sunucudan sunucuya (S2S) etkileşimler için yaygın olarak kullanılır. Bu tür uygulamalar genellikle daemon'lar veya hizmetler olarak adlandırılır.

İstemci kimlik bilgileri verme akışı, bir web hizmetinin (gizli istemci) bir kullanıcının kimliğine bürünmek yerine kendi kimlik bilgilerini kullanmasına izin verir ve başka bir web hizmetini çağırırken kimlik doğrulaması yapar. Bu senaryoda istemci genellikle bir orta katman web hizmeti, bir daemon hizmeti veya bir web sitesidir. Daha yüksek bir güvence düzeyi için Microsoft kimlik platformu, çağrı hizmetinin kimlik bilgisi olarak bir sertifika (paylaşılan gizli dizi yerine) kullanmasına da izin verir.

Uygulama gizli dizileri

Parolalı gizli istemci diyagramı

Yukarıdaki diyagramda uygulama:

  1. Uygulama gizli dizisi veya parola kimlik bilgileri kullanarak belirteç alır.
  2. Kaynak isteklerinde bulunmak için belirteci kullanır.

Sertifikalar

Sertifika içeren gizli istemci diyagramı

Yukarıdaki diyagramda uygulama:

  1. Sertifika kimlik bilgilerini kullanarak bir belirteç alır.
  2. Kaynak isteklerinde bulunmak için belirteci kullanır.

Bu tür istemci kimlik bilgilerinin şu şekilde olması gerekir:

  • Azure AD'ye kaydedildi.
  • Kodunuzda gizli istemci uygulama nesnesi oluştururken geçirildi.

İstemci kimlik bilgileri için kısıtlamalar

Gizli istemci akışı Android, iOS veya Evrensel Windows Platformu (UWP) gibi mobil platformlarda desteklenmez. Mobil uygulamalar, kimlik doğrulaması gizli dizilerinin gizliliğini garanti edemeyen genel istemci uygulamaları olarak kabul edilir.

Cihaz kodu

OAuth 2 cihaz kodu akışı, kullanıcıların akıllı TV'ler, Nesnelerin İnterneti (IoT) cihazları ve yazıcılar gibi giriş kısıtlanmış cihazlarda oturum açmasına olanak tanır. Microsoft Entra ID ile etkileşimli kimlik doğrulaması için bir web tarayıcısı gerekir. Cihaz veya işletim sisteminin web tarayıcısı sağlamadığı durumlarda, cihaz kodu akışı bilgisayar veya cep telefonu gibi başka bir cihazın etkileşimli olarak oturum açmasını sağlar.

Uygulama, cihaz kodu akışını kullanarak belirteçleri bu cihazlar ve işletim sistemleri için tasarlanmış iki adımlı bir işlemle alır.

Cihaz kodu akışı diyagramı

Yukarıdaki diyagramda:

  1. Kullanıcı kimlik doğrulaması gerektiğinde, uygulama bir kod sağlar ve kullanıcıdan URL'yi (örneğin, https://microsoft.com/devicelogin) ziyaret etmek için İnternet'e bağlı bir akıllı telefon gibi başka bir cihaz kullanmasını ister. Daha sonra kullanıcıdan kodu girmesi istenir ve gerekirse onay istemleri ve çok faktörlü kimlik doğrulaması dahil olmak üzere normal bir kimlik doğrulama deneyiminde devam eder.
  2. Kimlik doğrulaması başarılı olduğunda, istekte bulunan uygulama gerekli belirteçleri Microsoft kimlik platformu alır ve ihtiyaç duyduğu web API çağrılarını gerçekleştirmek için kullanır.

Cihaz kodu kısıtlamaları

  • Cihaz kodu akışı yalnızca genel istemci uygulamaları için kullanılabilir.
  • MSAL'de bir genel istemci uygulaması başlatırken şu yetkili biçimlerinden birini kullanın:
    • Kiracı tabanlı: https://login.microsoftonline.com/{tenant}/, burada {tenant} kiracı kimliğini temsil eden GUID veya kiracıyla ilişkilendirilmiş bir etki alanı adıdır.
    • İş ve okul hesapları: https://login.microsoftonline.com/organizations/.

Örtük onay

Örtük verme, istemci tarafı tek sayfalı uygulamalar (SPA' lar) için tercih edilen ve daha güvenli belirteç verme akışı olarak PKCE ile yetkilendirme kodu akışıyla değiştirilmiştir. SPA oluşturuyorsanız bunun yerine PKCE ile yetkilendirme kodu akışını kullanın.

JavaScript ile yazılmış tek sayfalı web uygulamaları (Angular, Vue.js veya React.js gibi çerçeveler dahil) sunucudan indirilir ve kodları doğrudan tarayıcıda çalışır. İstemci tarafı kodları bir web sunucusunda değil tarayıcıda çalıştığından, geleneksel sunucu tarafı web uygulamalarından farklı güvenlik özelliklerine sahiptir. Yetkilendirme kodu akışı için Kod Değişimi için Proof Key (PKCE) kullanılabilirliğinden önce, erişim belirteçlerini almada daha iyi yanıt hızı ve verimlilik için SPA'lar tarafından örtük verme akışı kullanıldı.

OAuth 2 örtük verme akışı, uygulamanın arka uç sunucu kimlik bilgisi değişimi gerçekleştirmeden Microsoft kimlik platformu erişim belirteçleri almasına olanak tanır. Örtük verme akışı, bir uygulamanın kullanıcıda oturum açmasına, oturum açmasına ve kullanıcı aracısı tarafından indirilen ve çalıştırılan JavaScript kodundan (genellikle bir web tarayıcısı) diğer web API'leri için belirteçler almasına olanak tanır.

Örtük izin akışı diyagramı

Örtük verme kısıtlamaları

Örtük verme akışı, Electron veya React Native gibi platformlar arası JavaScript çerçeveleri kullanan uygulama senaryolarını içermez. Bunlar gibi platformlar arası çerçeveler, üzerinde çalıştıkları yerel masaüstü ve mobil platformlarla etkileşim için ek özellikler gerektirir.

Örtük akış modu aracılığıyla verilen belirteçlerin uzunluk sınırlaması vardır çünkü URL'de tarayıcıya döndürülürler (burada response_mode veya fragment).query Bazı tarayıcılar, tarayıcı çubuğundaki URL'nin uzunluğunu sınırlar ve çok uzun olduğunda başarısız olur. Bu nedenle, bu örtük akış belirteçleri veya wids talepleri içermezgroups.

Adına (OBO)

OAuth 2 adına kimlik doğrulama akışı akışı , bir uygulama başka bir hizmeti veya web API'sini çağırdığında kullanılır. Bunun için, istek zinciri aracılığıyla yayılması gereken temsilci kullanıcı kimliği ve izinler kullanarak başka bir hizmet veya web API'sini çağırması gerekir. Orta katman hizmetinin aşağı akış hizmetine kimliği doğrulanmış isteklerde bulunabilmesi için, istekte bulunan kullanıcı adına Microsoft kimlik platformu bir erişim belirtecinin güvenliğini sağlaması gerekir.

Adına akış diyagramı

Yukarıdaki diyagramda:

  1. Uygulama, web API'si için bir erişim belirteci alır.
  2. İstemci (web, masaüstü, mobil veya tek sayfalı uygulama) korumalı bir web API'sini çağırır ve erişim belirtecini HTTP isteğinin kimlik doğrulama üst bilgisine taşıyıcı belirteç olarak ekler. Web API'sinde kullanıcının kimliği doğrulanır.
  3. İstemci web API'sini çağırdığında, web API'si kullanıcı adına başka bir belirteç istemektedir.
  4. Korumalı web API'si, kullanıcı adına aşağı akış web API'sini çağırmak için bu belirteci kullanır. Web API'si daha sonra diğer aşağı akış API'leri için belirteç isteyebilir (ancak yine de aynı kullanıcı adına).

Kullanıcı adı/parola (ROPC)

Uyarı

Kaynak sahibi parola kimlik bilgileri (ROPC) akışı artık önerilmez. ROPC, yüksek düzeyde güven ve kimlik bilgisi açığa çıkarma gerektirir. ROPC'i yalnızca daha güvenli bir akış kullanılamıyorsa kullanın. Daha fazla bilgi için bkz . Artan parola sorununun çözümü nedir?.

OAuth 2 kaynak sahibi parola kimlik bilgileri (ROPC) izni, bir uygulamanın parolasını doğrudan işleyerek kullanıcıda oturum açmasına olanak tanır. Masaüstü uygulamanızda, bir belirteci sessizce almak için kullanıcı adı/parola akışını kullanabilirsiniz. Uygulamayı kullanırken kullanıcı arabirimi gerekmez.

DevOps gibi bazı uygulama senaryoları ROPC'yi yararlı bulabilir, ancak kullanıcı oturum açma için etkileşimli bir kullanıcı arabirimi sağladığınız herhangi bir uygulamada bundan kaçınmalısınız.

Kullanıcı adı/parola akışının diyagramı

Yukarıdaki diyagramda uygulama:

  1. Kimlik sağlayıcısına kullanıcı adını ve parolayı göndererek bir belirteç alır.
  2. Belirteci kullanarak bir web API'sini çağırır.

Windows etki alanına katılmış makinelerde sessizce belirteç almak için ROPC yerine Web Hesabı Yöneticisi'ni (WAM) kullanmanızı öneririz. Diğer senaryolar için cihaz kodu akışını kullanın.

ROPC kısıtlamaları

ROPC akışını kullanan uygulamalar için aşağıdaki kısıtlamalar geçerlidir:

  • Çoklu oturum açma desteklenmiyor.
  • Çok faktörlü kimlik doğrulaması (MFA) desteklenmiyor.
    • Bu akışı kullanmadan önce kiracı yöneticinize danışın- MFA yaygın olarak kullanılan bir özelliktir.
  • Koşullu Erişim desteklenmiyor.
  • ROPC yalnızca iş ve okul hesapları için çalışır.
  • Kişisel Microsoft hesapları (MSA) ROPC tarafından desteklenmez .
  • ROPC, .NET masaüstü ve .NET uygulamalarında desteklenir .
  • ROPC, Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez.
  • Microsoft Entra Dış Kimlik'daki ROPC yalnızca yerel hesaplar için desteklenir.
    • MSAL.NET ve Microsoft Entra Dış Kimlik ROPC hakkında bilgi için bkz. B2C ile Kaynak Sahibi Parola Kimlik Bilgileri (ROPC).

Tümleşik Windows kimlik doğrulaması (IWA)

Not

Tümleşik Windows Kimlik Doğrulaması, belirteçleri sessizce almanın daha güvenilir bir yolu olan WAM ile değiştirildi. WAM, geçerli Windows kullanıcısını sessizce oturum açabilir. Bu iş akışı karmaşık kurulum gerektirmez ve hatta kişisel (Microsoft) hesaplarında bile çalışır. Dahili olarak, Windows Aracısı (WAM), IWA ve PRT'yi kullanma dahil olmak üzere geçerli Windows kullanıcısı için belirteç almak için çeşitli stratejiler deneyecektir. Bu, IWA ile ilgili sınırlamaların çoğunu ortadan kaldırır.

MSAL, etki alanına katılmış veya Microsoft Entra ID'ye katılmış Windows bilgisayarlarda çalışan masaüstü ve mobil uygulamalar için tümleşik Windows kimlik doğrulamasını (IWA) destekler. IWA kullanarak, bu uygulamalar kullanıcı arabirimi etkileşimi gerektirmeden sessizce bir belirteç alır.

Tümleşik Windows kimlik doğrulaması diyagramı

Yukarıdaki diyagramda uygulama:

  1. Tümleşik Windows Kimlik Doğrulaması kullanarak belirteç alır.
  2. Kaynak isteklerinde bulunmak için belirteci kullanır.

IWA kısıtlamaları

  • Uyumluluk. Tümleşik Windows kimlik doğrulaması (IWA), .NET masaüstü, .NET ve Evrensel Windows Platformu (UWP) uygulamaları için etkinleştirilir. IWA yalnızca ADFS federasyon kullanıcılarını destekler. Active Directory'de oluşturulan ve Microsoft Entra Id ile desteklenen kullanıcılar. Active Directory desteği olmadan doğrudan Microsoft Entra ID'de oluşturulan kullanıcılar (yönetilen kullanıcılar) bu kimlik doğrulama akışını kullanamaz.
  • Çok faktörlü kimlik doğrulaması (MFA). Microsoft Entra ID kiracısında MFA etkinleştirilirse ve Microsoft Entra ID tarafından bir MFA sınaması verilirse IWA etkileşimli olmayan (sessiz) kimlik doğrulaması başarısız olabilir. IWA başarısız olursa, daha önce açıklandığı gibi etkileşimli bir kimlik doğrulama yöntemine geri dönmeniz gerekir. Microsoft Entra ID, iki öğeli kimlik doğrulamasının ne zaman gerekli olduğunu belirlemek için yapay zeka kullanır. İki öğeli kimlik doğrulaması genellikle bir kullanıcı farklı bir ülkeden/bölgeden oturum açtığında, VPN kullanmadan bir şirket ağına bağlandığında ve bazen bir VPN aracılığıyla bağlandığında gereklidir. MFA'nın yapılandırması ve sınama sıklığı geliştirici olarak denetiminizin dışında olabileceğinden, uygulamanız IWA sessiz belirteç alma hatasını düzgün bir şekilde işlemelidir.
  • Yetkili URI kısıtlamaları. Genel istemci uygulaması oluştururken geçirilen yetkili aşağıdakilerden biri olmalıdır:
    • https://login.microsoftonline.com/{tenant}/ - Bu yetkili, oturum açma hedef kitlesi belirtilen Microsoft Entra Id kiracısında bulunan kullanıcılarla sınırlı olan tek kiracılı bir uygulamayı gösterir. Değer, {tenant} GUID formundaki kiracı kimliği veya kiracıyla ilişkilendirilmiş etki alanı adı olabilir.
    • https://login.microsoftonline.com/organizations/ - Bu yetkili, oturum açma hedef kitlesi herhangi bir Microsoft Entra ID kiracısında bulunan kullanıcılar olan çok kiracılı bir uygulamayı gösterir.
  • Kişisel hesaplar. Kişisel Microsoft hesapları (MSA) IWA tarafından desteklenmediğinden veya içermemelidir /common/consumers.
  • Onay gereksinimleri. IWA sessiz bir akış olduğundan, uygulamanızın kullanıcısının uygulamayı kullanmayı daha önce onaylamış olması veya kiracı yöneticisinin daha önce kiracıdaki tüm kullanıcılara uygulamayı kullanma izni vermiş olması gerekir. Her iki gereksinimi de karşılamak için bu işlemlerden birinin tamamlanmış olması gerekir:
    • Uygulama geliştiricisi olarak Azure Portal'da kendiniz Için Grant'i seçtiniz.
    • Kiracı yöneticisi, Azure portalındaki uygulama kaydının API izinleri sekmesinde {tenant domain} için yönetici onayı ver/iptal et'i seçti; bkz. Web API'nize erişmek için izin ekleme.
    • Kullanıcıların uygulamaya onay vermeleri için bir yol sağladınız; bkz. Microsoft kimlik platformu izinlere ve onaylara genel bakış.
    • Kiracı yöneticisinin uygulamaya onay vermesine yönelik bir yol sağladınız; bkz. Microsoft kimlik platformu izinlere ve onaylara genel bakış.

Sonraki adımlar

MSAL tarafından desteklenen kimlik doğrulama akışlarını incelediğinize göre, bu akışlarda kullanılan belirteçleri alma ve önbelleğe alma hakkında bilgi edinin.