Kimlik doğrulama akışları
Microsoft Kimlik Doğrulama Kitaplığı (MSAL), farklı uygulama senaryolarında kullanmak üzere çeşitli kimlik doğrulama akışlarını destekler.
| Akış | Açıklama | şunda kullanılır: |
|---|---|---|
| Yetkilendirme kodu | Web API'leri gibi korumalı kaynaklara erişim elde etmek için bir cihaza yüklenmiş uygulamalarda kullanılır. Mobil ve masaüstü uygulamalarınıza oturum açma ve API erişimi eklemenize olanak sağlar. | Masaüstü uygulamaları, mobil uygulamalar, web uygulamaları |
| İstemci kimlik bilgileri | Bir uygulamanın kimliğini kullanarak web'de barındırılan kaynaklara erişmeye olanak sağlar. Genellikle kullanıcıyla anında etkileşim olmadan arka planda çalışması gereken sunucudan sunucuya etkileşimler için kullanılır. | Daemon uygulamaları |
| Cihaz kodu | Kullanıcıların akıllı TV, IoT cihazı veya yazıcı gibi giriş kısıtlı cihazlarda oturum açmasını sağlar. | Masaüstü/mobil uygulamalar |
| Örtülü onay | Uygulamanın bir arka uç sunucusu kimlik bilgisi değişimi gerçekleştirmeden belirteçleri alamalarını sağlar. Uygulamanın kullanıcının oturumunu açmasını, oturumu sürdürmesini ve diğer web API'leri için belirteçleri istemci JavaScript kodunda alasını sağlar. | Tek sayfalı uygulamalar (SPA) |
| Adına | Uygulama bir hizmeti veya web API'sini çağırır ve bu api'nin başka bir hizmeti veya web API'sini çağırsı gerekir. Burada fikir, temsilci kullanıcı kimliğini ve izinlerini istek zinciri aracılığıyla yaymadır. | Web API'leri |
| Kullanıcı adı/parola | Bir uygulamanın doğrudan parolasını işerek kullanıcıda oturum açmasını sağlar. Bu akış önerilmez. | Masaüstü/mobil uygulamalar |
| Tümleşik Windows kimlik doğrulaması | Etki alanına veya etki alanına (Azure AD) Azure Active Directory bilgisayarlardaki uygulamaların sessiz bir şekilde (kullanıcıdan herhangi bir kullanıcı arabirimi etkileşimi olmadan) belirteç elde etmelerini sağlar. | Masaüstü/mobil uygulamalar |
Her akış belirteçleri ve kodları nasıl yalıtır?
İstemci uygulamanın nasıl inşa edildiklerinden bağlı olarak, Microsoft kimlik platformu tarafından desteklenen kimlik doğrulama akışlarından birini veya daha fazlasını kullanabilir. Bu akışlar, yetkilendirme kodlarının yanı sıra çeşitli belirteç türleri üretebilir ve bunların çalışması için farklı belirteçler gerektirir.
| Akış | Gerektirir | id_token | erişim belirteci | yenileme belirteci | yetkilendirme kodu |
|---|---|---|---|---|---|
| Yetkilendirme kod akışı | x | x | x | x | |
| İstemci kimlik bilgileri | x (yalnızca uygulama) | ||||
| Cihaz kod akışı | x | x | x | ||
| Örtük akış | x | x | |||
| On-behalf-of akışı | erişim belirteci | x | x | x | |
| Kullanıcı adı/parola (ROPC) | kullanıcı adı & parolası | x | x | x | |
| Hibrit OIDC akışı | x | x | |||
| Belirteç kullanım yenileme | yenileme belirteci | x | x | x |
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 giriş isteney girilesi anlamına gelir. Örneğin, kullanıcıdan oturum açmasını, çok faktörlü kimlik doğrulamasını (MFA) gerçekleştirmesi veya kaynaklara ek onaylar verilmesini ister.
- Etkileşimli olmayan veya sessiz olan kimlik doğrulaması, oturum açma sunucusunun kullanıcıdan ek bilgi istemi alamayacak bir şekilde belirteç elde etmek ister.
MSAL tabanlı uygulamanız önce sessizce bir belirteç elde etmek ve ardından etkileşimli olarak yalnızca etkileşimli olmayan yöntemin başarısız olması durumunda bunu denemeli. Bu düzen hakkında daha fazla bilgi için bkz. Microsoft Authentication Library (MSAL) kullanarak belirteçleri edinme ve önbelleğe ekleme.
Yetkilendirme kodu
OAuth 2 yetkilendirme kodu izni, web API'leri gibi korumalı kaynaklara erişim elde etmek için bir cihaza yüklenmiş uygulamalarda kullanılabilir. Bu, mobil ve masaüstü uygulamalarınıza oturum açma ve API erişimi eklemenize olanak sağlar.
Kullanıcılar web uygulamalarında (web siteleri) oturum aken web uygulaması bir yetkilendirme kodu alır. Yetkilendirme kodu, web API'lerini çağıran bir belirteç almak için alındı.

Yukarıdaki diyagramda, uygulama:
- Erişim belirteci için edecin bir yetkilendirme kodu talep eder.
- Bir web API'sini çağıran erişim belirteci kullanır.
Dikkat edilmesi gerekenler
Yetkilendirme kodunu bir belirteç kullanmak için yalnızca bir kez kullanabilirsiniz. Protokol standart belirtimi tarafından açıkça yasaklanmış olduğundan, aynı yetkilendirme koduyla bir belirteci birden çok kez edinmeye çalışmayın. Kodu kasıtlı olarak veya bir çerçevenin bunu sizin için de yaptığı farkında olmadığınız için birkaç kez kullansanız aşağıdaki hatayı alırsınız:
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ışı, bir uygulamanın kimliğini kullanarak web'de barındırılan kaynaklara erişmeye olanak 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 bir istemci) başka bir web hizmetini çağıran bir kullanıcının kimliğine bürünmek yerine kendi kimlik bilgilerini kullanmasını sağlar. Bu senaryoda istemci genellikle orta katman bir web hizmeti, daemon hizmeti veya web sitesidir. daha yüksek bir güvence düzeyi için Microsoft kimlik platformu, çağıran hizmetin kimlik bilgileri olarak bir sertifika (paylaşılan gizlilik yerine) kullanmasına de olanak tanır.
Not
Gizli istemci akışı, yalnızca genel istemci uygulamalarını desteklediklerinden UWP, Xamarin. iOS ve Xamarin. Android gibi mobil platformlarda kullanılabilir değildir. Ortak istemci uygulamaları, uygulamanın kimliğini kimlik sağlayıcısına nasıl kanıtlayabileceğinizi bilmez. Bir sertifika dağıtarak Web uygulaması veya Web API 'SI arka uçları üzerinde güvenli bir bağlantı elde edilebilir.
Uygulama gizli dizileri

Önceki diyagramda, uygulama:
- Uygulama gizli anahtarı veya parola kimlik bilgilerini kullanarak bir belirteç alır.
- , Kaynak isteklerini yapmak için belirtecini kullanır.
Sertifikalar

Önceki diyagramda, uygulama:
- Sertifika kimlik bilgilerini kullanarak bir belirteç alır.
- , Kaynak isteklerini yapmak için belirtecini kullanır.
Bu istemci kimlik bilgilerinin olması gerekir:
- Azure AD 'ye kayıtlı.
- Kodunuzda gizli istemci uygulama nesnesi oluşturulurken geçirilir.
Cihaz kodu
OAuth 2 cihaz kodu akışı , kullanıcıların akıllı TV 'Ler, IoT cihazları ve yazıcılar gibi giriş kısıtlı cihazlarda oturum açmasına olanak tanır. Azure AD ile etkileşimli kimlik doğrulaması için bir Web tarayıcısı gerekir. Cihazın veya işletim sisteminin bir Web tarayıcısı sunmazsa, cihaz kodu akışı kullanıcının etkileşimli olarak oturum açmak için bir bilgisayar veya cep telefonu gibi başka bir cihazı kullanmasına olanak sağlar.
Uygulama, cihaz kod akışını kullanarak belirteçleri bu cihazlar ve işletim sistemleri için tasarlanan iki adımlı bir işlemle edinir. Bu tür uygulamalara örnekler, IoT cihazlarında ve komut satırı arabirimi (CLı) araçlarında çalışan bunları içerir.

Yukarıdaki diyagramda:
- Kullanıcı kimlik doğrulaması gerekli olduğunda, uygulama bir kod sağlar ve kullanıcıdan bir URL 'YI (örneğin,) ziyaret etmek için internet 'e bağlı bir akıllı telefonu gibi başka bir cihazı kullanmasını ister
https://microsoft.com/devicelogin. Daha sonra kullanıcıya kodu girmesi istenir ve gerekirse izin istemleri ve çok faktörlü kimlik doğrulamasıdahil olmak üzere normal bir kimlik doğrulama deneyimine devam edilir. - Başarılı kimlik doğrulamasından sonra, komut satırı uygulaması gerekli belirteçleri bir arka kanal aracılığıyla alır ve bunları, gereken Web API çağrılarını gerçekleştirmek için kullanır.
Kısıtlamalar
- Cihaz kod akışı yalnızca genel istemci uygulamalarında kullanılabilir.
- Ortak istemci uygulamasını oluştururken geçirilen yetkili aşağıdakilerden biri olmalıdır:
- Kiracıda,
https://login.microsoftonline.com/{tenant}/,{tenant}Kiracı kimliğini temsıl eden GUID veya kiracı ile ilişkili bir etki alanı adı olan biçimindedir. - Formdaki iş ve okul hesapları için
https://login.microsoftonline.com/organizations/.
- Kiracıda,
Örtük izin
OAuth 2 örtülü izin verme akışı, uygulamanın arka uç sunucu kimlik bilgisi değişimi gerçekleştirmeden Microsoft kimlik platformu belirteçleri almasına izin verir. Bu akış, uygulamanın kullanıcıya oturum açmasını, oturum korumasını ve diğer Web API 'Leri için, tüm istemci JavaScript kodu içindeki belirteçleri almasını sağlar.
birçok modern web uygulaması, JavaScript veya Angular, Vue.js ve React.js gibi bir SPA çerçevesiyle yazılmış istemci tarafı, tek sayfalı uygulamalar (SPA) olarak oluşturulmuştur. Bu uygulamalar bir Web tarayıcısında çalışır ve geleneksel sunucu tarafı Web uygulamalarından farklı kimlik doğrulama özelliklerine sahiptir. Microsoft kimlik platformu, tek sayfalı uygulamaların kullanıcıları oturum açmasını ve arka uç hizmetlerine veya web apı 'lerine, örtük verme akışını kullanarak erişim belirteçleri almasını sağlar. Örtük akış, uygulamanın kimliği doğrulanmış kullanıcıyı temsil etmesi için kimlik belirteçleri almasına izin verir ve ayrıca korumalı API 'Leri çağırmak için gereken belirteçlere erişim sağlar.
Bu kimlik doğrulama akışı, yerel platformlarla etkileşim için daha fazla özellik gerektirdiğinden, elektron veya React-Native gibi platformlar arası JavaScript çerçeveleri kullanan uygulama senaryoları içermez.
Örtük akış modu aracılığıyla verilen belirteçlerin, tarayıcıya URL tarafından döndürüldüğünden (ya da) bir uzunluk sınırlaması vardır response_mode query fragment . Bazı tarayıcılar, tarayıcı çubuğundaki URL 'nin uzunluğunu sınırlar ve çok uzunsa başarısız olur. Bu nedenle, bu örtük akış belirteçleri groups veya wids talep içermez.
Adına-
OAuth 2 adına sahip kimlik doğrulama akışı akışı, bir uygulama bir hizmeti veya Web API 'sini çağıran bir hizmetin başka bir hizmet veya Web API 'si çağırması gerektiği durumlarda kullanılır. Amaç, temsilci kullanıcı kimliğini ve izinleri istek zinciri aracılığıyla yaymanız önerilir. orta katman hizmetin, aşağı akış hizmetine kimliği doğrulanmış istekler yapması için kullanıcı adına Microsoft kimlik platformu bir erişim belirtecinin güvenli hale getirme ihtiyacı vardır.

Yukarıdaki diyagramda:
- Uygulama, Web API 'SI için bir erişim belirteci alır.
- İ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 üstbilgisinde bir taşıyıcı belirteci olarak ekler. Web API 'SI kullanıcının kimliğini doğrular.
- İstemci, Web API 'sini çağırdığında, Web API 'SI Kullanıcı adına başka bir belirteç ister.
- Korunan Web API 'si, kullanıcının adına bir aşağı akış Web API 'SI çağırmak için bu belirteci kullanır. Web API 'SI daha sonra diğer aşağı akış API 'Leri için belirteçler isteyebilir (ancak hala aynı kullanıcı adına).
Kullanıcı adı/parola
OAuth 2 kaynak sahibi parola kimlik bilgileri (ropc) verme izni, bir uygulamanın kullanıcı parolasını doğrudan işlemesini sağlayarak oturum açmasına izin verir. Masaüstü uygulamanızda Kullanıcı adı/parola akışını sessizce bir belirteç elde edebilirsiniz. Uygulama kullanılırken hiçbir Kullanıcı arabirimi gerekli değildir.

Önceki diyagramda, uygulama:
- Kimlik sağlayıcısına Kullanıcı adı ve parola göndererek bir belirteç alır.
- Belirtecini kullanarak bir Web API 'SI çağırır.
Uyarı
Bu akış önerilmez. Yüksek derecede güven ve kimlik bilgisi pozlaması gerektirir. Bu akışı yalnızca daha güvenli akışlar kullanılmıyorsa kullanmanız gerekir. Daha fazla bilgi için, bkz. parola büyüyen soruna neden olan çözüm nedir?.
Windows etki alanına katılmış makinelerde sessizce belirteç almak için tercih edilen akış, Windows kimlik doğrulamasıyla tümleşiktir. Diğer durumlarda, cihaz kod akışınıkullanın.
kullanıcı adı/parola akışı DevOps gibi bazı senaryolarda yararlı olsa da, kendi kullanıcı arabiriminizi sağladığınız etkileşimli senaryolarda kullanıcı adı/parola kullanmak istiyorsanız bunu önleyin.
Kullanıcı adı/parola kullanarak:
- Çok faktörlü kimlik doğrulaması gerçekleştirmesi gereken kullanıcılar hiçbir etkileşim olmadığından oturum açamaz.
- Kullanıcılar çoklu oturum açma yapamaz.
Kısıtlamalar
tümleşik Windows kimlik doğrulama kısıtlamalarındanayrı olarak aşağıdaki kısıtlamalar de geçerlidir:
- Kullanıcı adı/parola akışı, koşullu erişim ve çok faktörlü kimlik doğrulamasıyla uyumlu değildir. Sonuç olarak, uygulamanız kiracı yöneticisinin çok faktörlü kimlik doğrulaması gerektirdiği bir Azure AD kiracısında çalışıyorsa, bu akışı kullanamazsınız. Birçok kuruluş bu şekilde yapılır.
- ROPC yalnızca iş ve okul hesaplarında çalışır. Microsoft hesapları için ROPC kullanamazsınız (MSA).
- flow, .net masaüstü ve .net Core 'ta mevcuttur, ancak Evrensel Windows Platformu.
- Azure AD B2C, ROPC akışı yalnızca yerel hesaplar için kullanılır. MSAL.NET ve Azure AD B2C 'de ROPC hakkında bilgi için bkz. ROPC 'yi Azure AD B2C kullanma.
tümleşik Windows kimlik doğrulaması
MSAL, etki alanına katılmış veya Azure AD 'ye katılmış bir Windows bilgisayarında çalışan masaüstü ve mobil uygulamalar için tümleşik Windows kimlik doğrulamasını (ıwa) destekler. IWA kullanarak bu uygulamalar kullanıcı ARABIRIMI etkileşimi gerektirmeden sessizce bir belirteç alabilir.

Önceki diyagramda, uygulama:
- tümleşik Windows kimlik doğrulaması kullanarak bir belirteç alır.
- , Kaynak isteklerini yapmak için belirtecini kullanır.
Kısıtlamalar
tümleşik Windows kimlik doğrulaması (ıwa) yalnızca federasyon kullanıcıları destekler-Active Directory oluşturulan ve Azure AD tarafından desteklenen kullanıcılar. Active Directory yedekleme (yönetilen kullanıcılar) olmadan doğrudan Azure AD 'de oluşturulan kullanıcılar bu kimlik doğrulama akışını kullanamaz. Bu sınırlama, Kullanıcı adı/parola akışınıetkilemez.
ıwa .NET Framework, .net Core ve Evrensel Windows Platformu uygulamalar içindir.
IWA Multi-Factor Authentication 'ı atlamaz. Multi-Factor Authentication yapılandırılırsa, çok faktörlü kimlik doğrulama sınaması gerekliyse ıWA başarısız olabilir. Multi-Factor Authentication Kullanıcı etkileşimi gerektirir.
Kimlik sağlayıcısının iki faktörlü kimlik doğrulamasının ne zaman gerçekleştirileceklerini denetlemezsiniz. Kiracı yöneticisi bunu yapar. Genellikle, farklı bir ülkede/bölgede oturum aken, VPN üzerinden bir kurumsal ağa bağlanmadısanız ve bazen VPN üzerinden bağlansanız bile iki faktörlü kimlik doğrulaması gerekir. Azure AD, iki faktörlü kimlik doğrulamasının gerekli olup olduğunu sürekli öğrenmek için AI kullanır. IWA başarısız olursa, etkileşimli bir kullanıcı istemine geri dönmelisiniz.
Genel istemci uygulaması oluşturmada geçirilen yetkilinin aşağıdakilerden biri olması gerekir:
- Kiracılı,
https://login.microsoftonline.com/{tenant}/,formda, burada kiracı kimliğini temsil eden GUID veya{tenant}kiracıyla ilişkili bir etki alanı adıdır. - Tüm iş ve okul hesapları için (
https://login.microsoftonline.com/organizations/). Microsoft kişisel hesapları (MSA) desteklenmez; veya/commonkiracılarını/consumerskullanasiniz.
IWA sessiz bir akış olduğundan, aşağıdakilerden birinin doğru olması gerekir:
- Uygulamanın kullanıcısı, uygulamayı kullanmak için daha önce onaymış olması gerekir.
- Kiracı yöneticisinin uygulamayı kullanmak için kiracıda tüm kullanıcılara önceden onaymış olması gerekir.
Bu, aşağıdakilerden birinin doğru olduğu anlamına gelir:
- Geliştirici olarak, geliştirici olarak kendi Azure portal Grant'i seçtiniz.
- Kiracı yöneticisi, uygulama kaydının API izinleri sekmesinde {kiracı etki alanı} için yönetici onayı ver/iptal Azure portal (bkz. Web API'nize erişmek için izin ekleme).
- Kullanıcıların uygulamayı kabul etmek için bir yol sağladınız; Bkz. Bireysel kullanıcı onayı isteği.
- Kiracı yöneticisinin uygulamayı onayladığı bir yol sağladınız; bkz. yönetici onayı.
IWA akışı .NET masaüstü, .NET Core ve Windows Evrensel Platform uygulamaları için etkinleştirilir.
Onay hakkında daha fazla bilgi için bkz. v2.0 izinleri ve onayı.
Sonraki adımlar
Microsoft Kimlik Doğrulama Kitaplığı (MSAL) tarafından desteklenen kimlik doğrulama akışlarını gözden geçirerek bu akışlarda kullanılan belirteçleri alma ve önbelleğe alma hakkında bilgi edinebilirsiniz:
Microsoft Authentication Library (MSAL) kullanarak belirteçleri alın ve önbelleğe alın