MSAL'de kimlik doğrulama akışı desteği

Microsoft Kimlik Doğrulama Kitaplığı (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şim. 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 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 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'ya 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ışı Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır Kimlik doğrulama akışı yenileme belirteci için çalışır Yetkilendirme kodu çalışır
İstemci kimlik bilgileri Kimlik doğrulama akışı erişim belirteci için çalışır (yalnızca uygulama)
Cihaz kodu akışı Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır Kimlik doğrulama akışı yenileme belirteci için çalışır
Örtük akış Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır
On-behalf-of akışı erişim belirteci Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır Kimlik doğrulama akışı yenileme belirteci için çalışır
Kullanıcı adı/parola (ROPC) kullanıcı adı, parola Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır Kimlik doğrulama akışı yenileme belirteci için çalışır
Karma OIDC akışı Kimlik doğrulama akışı kimlik belirteci için çalışır Yetkilendirme kodu çalışır
Yenileme belirteci kullanım yenileme belirteci Kimlik doğrulama akışı kimlik belirteci için çalışır Kimlik doğrulama akışı erişim belirteci için çalışır Kimlik doğrulama akışı yenileme belirteci için çalışır

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 olmayan (sessiz) - 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.

Aşağıdaki diyagramda uygulama:

  1. Erişim belirteci için kullanılan bir yetkilendirme kodu istemektedir
  2. Web API'sini çağırmak için erişim belirtecini kullanır, Microsoft Graph

Yetkilendirme kodu akışı diyagramı.

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.

    Erişim belirtecini aynı yetkilendirme koduyla birden çok kez almayı denerseniz, Microsoft kimlik platformu tarafından aşağıdakine benzer bir hata döndürülür. Bazı kitaplıklar ve çerçeveler sizin için yetkilendirme kodunu otomatik olarak ister ve bu gibi durumlarda el ile bir kod istemek de bu hataya neden olur.

    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.0 istemci kimlik bilgileri akışı, web'de barındırılan kaynaklara bir uygulamanın kimliğini kullanarak erişmenizi sağlar. Kullanıcının anında etkileşime geçmesi gerekmeyen ve arka planda çalışması gereken sunucular arası etkileşimler için genellikle bu izin türü kullanılır. Bu tür uygulamalar genellikle daemon veya hizmet hesabı 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

Aşağıdaki diyagramda uygulama:

  1. Uygulama gizli dizisi veya parola kimlik bilgilerini kullanarak belirteç alır
  2. Kaynağın isteklerini yapmak için belirteci kullanır

Parolalı gizli istemci diyagramı.

Sertifikalar

Aşağıdaki diyagramda uygulama:

  1. Sertifika kimlik bilgilerini kullanarak belirteç alır
  2. Kaynağın isteklerini yapmak için belirteci kullanır

Sertifika içeren gizli istemci diyagramı.

Bu istemci kimlik bilgilerinin şunlar olması gerekir:

  • Microsoft Entra Id ile kaydedildi
  • Kodunuzda gizli istemci uygulama nesnesi oluştururken geçirildi

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

Gizli istemci akışı Android, iOS veya UWP gibi mobil platformlarda desteklenmez . Mobil uygulamalar, kimlik bilgilerinin gizliliğini garanti edemeyen genel istemci uygulamaları olarak kabul edilir.

Cihaz kodu

OAuth 2.0 cihaz kodu akışı, kullanıcıların akıllı TV'ler, 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ın veya işletim sisteminin web tarayıcısı sağlamadığı durumlarda, cihaz kodu akışı kullanıcının etkileşimli olarak oturum açmak için bilgisayar veya cep telefonu gibi başka bir cihaz kullanmasına olanak tanır.

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. Bu tür uygulamalara örnek olarak IoT cihazlarında ve komut satırı arabirimi (CLI) araçlarında çalışan uygulamalar verilebilir.

Aşağı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 ve gerekirse onay istemleri ve çok faktörlü kimlik doğrulaması da dahil olmak üzere normal bir kimlik doğrulama deneyiminde ilerlemesi istenir.
  2. Kimlik doğrulaması başarılı olduğunda, komut satırı uygulaması gerekli belirteçleri bir arka kanal üzerinden alır ve ihtiyaç duyduğu web API çağrılarını gerçekleştirmek için kullanır.

Cihaz kodu akışının diyagramı.

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ı: https://login.microsoftonline.com/{tenant}/, burada {tenant} kiracı kimliği 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 akışı, 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. Örtük verme akışının kullanılması artık önerilmez. 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.0 örtük verme akışı, uygulamanın arka uç sunucu kimlik bilgisi değişimi gerçekleştirmeden Microsoft kimlik platformu erişim belirteçlerini 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 daha fazla özellik gerektirir.

Örtük akış modu aracılığıyla verilen belirteçlerin uzunluk sınırlaması vardır çünkü url ile 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)

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

Aşağı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).

Adına akış diyagramı.

Kullanıcı adı/parola (ROPC)

Uyarı

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

OAuth 2.0 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.

Aşağıdaki diyagramda uygulama:

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

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

Windows etki alanına katılmış makinelerde sessizce belirteç almak için ROPC yerine tümleşik Windows kimlik doğrulaması (IWA) önerilir. 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 ASP.NET Core uygulamalarında desteklenir .
  • ROPC, Evrensel Windows Platformu (UWP) uygulamalarında desteklenmez.
  • Azure AD B2C'deki ROPC yalnızca yerel hesaplar için desteklenir.
    • MSAL.NET ve Azure AD B2C'deki ROPC hakkında bilgi için bkz . Azure AD B2C ile ROPC kullanma.

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

MSAL, etki alanına katılmış veya Microsoft Entra'ya 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.

Aşağıdaki diyagramda uygulama:

  1. Tümleşik Windows kimlik doğrulaması kullanarak belirteç alır
  2. Kaynağın isteklerini yapmak için belirteci kullanır

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

IWA kısıtlamaları

Uyumluluk

Tümleşik Windows kimlik doğrulaması (IWA), .NET masaüstü, .NET ve Windows Evrensel Platform uygulamaları için etkinleştirilir.

IWA yalnızca AD FS 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 kiracısında MFA etkinleştirilirse ve Microsoft Entra Kimliği tarafından bir MFA sınaması verilirse IWA'nın 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ırma ve sınama sıklığı geliştirici olarak denetiminizin dışında olabileceğinden, uygulamanız IWA'nın 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 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 kiracısında bulunan kullanıcılar olan çok kiracılı bir uygulamayı gösterir.

Kişisel Microsoft hesapları (MSA) IWA tarafından desteklenmediğinden veya içermemesi gerekir /common/consumers .

Onay gereksinimleri

IWA sessiz bir akış olduğundan:

  • Uygulamanızın kullanıcısı daha önce uygulamayı kullanmayı onaylamış olmalıdır.

    OR

  • Kiracı yöneticisinin uygulamayı kullanmak için kiracıdaki tüm kullanıcılara daha önce onay vermiş olması gerekir.

Her iki gereksinimi de karşılamak için bu işlemlerden birinin tamamlanmış olması gerekir:

  • Uygulama geliştiricisi olarak Kendiniz için Azure portalında 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 . Kullanıcı onayı.
  • Kiracı yöneticisinin uygulamaya onay vermesine yönelik bir yol sağladınız; bkz. Yönetici istrator onayı.

Onay hakkında daha fazla bilgi için bkz . İzinler ve onay.

Sonraki adım

Bu akışlarda kullanılan belirteçleri alma ve önbelleğe alma hakkında bilgi edinin: