Yeniden yönlendirme URI'si (yanıt URL'si) ana hattı ve kısıtlamaları

Bir kullanıcıda oturum açmak için uygulamanızın Microsoft Entra yetkilendirme uç noktasına bir oturum açma isteği göndermesi ve parametre olarak belirtilen yeniden yönlendirme URI'sini içermesi gerekir. Yeniden yönlendirme URI'si, Microsoft Entra kimlik doğrulama sunucusunun yalnızca istenen alıcıya yetkilendirme kodları ve erişim belirteçleri göndermesini sağlayan kritik bir güvenlik özelliğidir. Bu makalede, Microsoft kimlik platformu yeniden yönlendirme URI'lerinin özellikleri ve kısıtlamaları özetlenmiştir.

Yeniden yönlendirme URI'si nedir?

Yeniden yönlendirme URI'si veya yanıt URL'si, Microsoft Entra kimlik doğrulama sunucusunun kullanıcıyı başarıyla yetkilendikten ve erişim belirteci verildikten sonra gönderdiği konumdur. Bir kullanıcıda oturum açmak için uygulamanızın parametre olarak belirtilen yeniden yönlendirme URI'sine sahip bir oturum açma isteği göndermesi gerekir, bu nedenle kullanıcı başarıyla oturum açtıktan sonra, kimlik doğrulama sunucusu kullanıcıyı yeniden yönlendirir ve oturum açma isteğinde belirtilen yeniden yönlendirme URI'sine bir erişim belirteci verir.

Yeniden yönlendirme URI'lerinin neden bir uygulama kaydına eklenmesi gerekiyor?

Güvenlik nedeniyle, kimlik doğrulama sunucusu kullanıcıları yeniden yönlendirmez veya belirteçleri uygulama kaydına eklenmemiş bir URI'ye göndermez. Microsoft Entra oturum açma sunucuları yalnızca kullanıcıları yeniden yönlendirir ve belirteçleri bir uygulama kaydına eklenmiş URI'leri yeniden yönlendirmek için gönderir. Oturum açma isteğinde belirtilen yeniden yönlendirme URI'leri uygulamanıza eklediğiniz yeniden yönlendirme URI'lerinden herhangi biriyle eşleşmiyorsa, gibi AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the applicationbir hata iletisi alırsınız.

Hata kodları hakkında daha fazla bilgi için bkz . Microsoft Entra kimlik doğrulaması ve yetkilendirme hata kodları.

Uygulama kaydına yeniden yönlendirme URI'sini eklemeli miyim?

Uygulama kaydınıza yeniden yönlendirme URI'sini eklemeniz gerekip gerekmediği, uygulamanızın kullandığı yetkilendirme protokolüne bağlıdır. Uygulamanız aşağıdaki yetkilendirme protokollerini kullanıyorsa, uygulama kaydınıza uygun yeniden yönlendirme URI'leri eklemeniz gerekir:

Uygulamanız aşağıdaki yetkilendirme protokollerini veya özelliklerini kullanıyorsa, uygulama kaydınıza yeniden yönlendirme URI'leri eklemeniz gerekmez.

Yeniden yönlendirme URI'lerimi hangi platforma eklemeliyim?

Oluşturduğunuz uygulama, uygulama kaydınızda bir veya birden çok yeniden yönlendirme URI'sini içeriyorsa, genel istemci akışı yapılandırmasını etkinleştirmeniz gerekir. Aşağıdaki tablolar, uygulamanızı oluşturduğunuz platforma göre eklemeniz gereken veya eklememeniz gereken yeniden yönlendirme URI'sinin türü hakkında rehberlik sağlar.

Web uygulaması yeniden yönlendirme URI yapılandırması

Uygulamanızın türü Tipik diller/Çerçeveler Uygulama Kaydı'nda yeniden yönlendirme URI'sini ekleme platformu
Uygulama mantığının çoğunun sunucuda gerçekleştirildiği geleneksel bir web uygulaması Node.js, web, ASP.NET, Python, Java, ASP.NET Core, PHP, Ruby, Blazor Server Web
Kullanıcı arabirimi mantığının çoğunun web sunucusuyla iletişim halinde web API'leri kullanılarak gerçekleştirilen tek sayfalı bir uygulama JavaScript, Angular, React, Blazor WebAssembly, Vue.js Tek sayfalı uygulama (SPA)

Mobil ve masaüstü uygulaması yeniden yönlendirme URI yapılandırması

Uygulamanızın türü Tipik diller/Çerçeveler Uygulama Kaydı'nda yeniden yönlendirme URI'sini ekleme platformu
Bu tablonun altında listelenen senaryolar dışında bir iOS veya macOS uygulaması Swift, Objective-C, Xamarin IOS/macOS
Android uygulaması Java, Kotlin, Xamarin Android
Mobil cihazda veya masaüstü makinede yerel olarak çalışan bir uygulama Node.js elektron, Windows masaüstü, UWP, React Native, Xamarin, Android, iOS/macOS Mobil ve masaüstü uygulamaları

Aşağıdaki yöntemlerden birini kullanarak bir iOS uygulaması oluşturuyorsanız mobil ve masaüstü uygulamaları platformunu kullanarak yeniden yönlendirme URI'sini ekleyin:

  • Eski SDK'ları (ADAL) kullanan iOS uygulamaları
  • açık kaynak SDK'ları kullanan iOS uygulamaları (AppAuth)
  • Desteklemediğimiz platformlar arası teknoloji kullanan iOS uygulamaları (Flutter)
  • OAuth protokollerimizi doğrudan uygulayan iOS uygulamaları
  • Desteklemediğimiz platformlar arası teknoloji kullanan macOS uygulamaları (Electron)

Yeniden yönlendirme URI'sini gerektirmeyen uygulamalar

Uygulama türü Örnekler/notlar İlişkili OAuth akışı
Klavyesi olmayan cihazlarda çalışan uygulamalar Akıllı TV, IoT cihazı veya yazıcıda çalışan uygulamalar Cihaz kodu akışı hakkında daha fazla bilgi edinin
Kullanıcıların parolaları işleyen uygulamalar, kullanıcıları Entra barındırılan oturum açma web sitesine yönlendirmek ve Entra'nın kullanıcı parolasını güvenli bir şekilde işlemesine izin vermek yerine doğrudan girer. Bu akışı yalnızca Yetkilendirme kodu akışı gibi diğer daha güvenli akışlar o kadar güvenli olmadığından uygun olmadığında kullanmanız gerekir. Kaynak sahibi parola kimlik bilgisi akışı daha fazla bilgi edinin
Web hesabı yöneticisi yerine Windows Tümleşik Kimlik Doğrulama Akışı kullanarak Windows üzerinde veya Windows etki alanına bağlı bir makinede (AD veya Azure AD'ye katılmış) çalışan masaüstü veya mobil uygulamalar Kullanıcı Windows bilgisayar sisteminde Entra kimlik bilgileriyle oturum açtıktan sonra otomatik olarak oturum açması gereken bir masaüstü veya mobil uygulama Windows Tümleşik Kimlik Doğrulama Akışı daha fazla bilgi edinin

Microsoft Entra uygulamaları için yeniden yönlendirme URI'lerinin kısıtlamaları nelerdir?

Microsoft Entra uygulama modeli, URI'leri yeniden yönlendirmek için aşağıdaki kısıtlamaları belirtir:

  • Yeniden yönlendirme URI'leri, bazı localhost yeniden yönlendirme URI'leri için özel durumlar dışında düzeniyle httpsbaşlamalıdır.

  • Yeniden yönlendirme URI'leri büyük/küçük harfe duyarlıdır ve çalışan uygulamanızın URL yolu ile eşleşmelidir.

    Örnekler:

    • Uygulamanız yolunun .../abc/response-oidcbir parçası olarak içeriyorsa, yeniden yönlendirme URI'sinde belirtmeyin .../ABC/response-oidc . Web tarayıcısı yolları büyük/küçük harfe duyarlı olarak ele aldığından, büyük/küçük harf eşleşmeyen .../ABC/response-oidc URL'ye yönlendirildiğinde ile .../abc/response-oidc ilişkili tanımlama bilgileri dışlanabilir.
  • Yol kesimiyle yapılandırılmamış yeniden yönlendirme URI'leri yanıtta sondaki eğik çizgiyle ('/') döndürülür. Bu yalnızca yanıt modu veya fragmentolduğunda query geçerlidir.

    Örnekler:

    • https://contoso.com olarak döndürülür https://contoso.com/
    • http://localhost:7071 olarak döndürülür http://localhost:7071/
  • Yol kesimi içeren yeniden yönlendirme URI'leri yanıtta sondaki eğik çizgiyle eklenmez .

    Örnekler:

    • https://contoso.com/abc olarak döndürülür https://contoso.com/abc
    • https://contoso.com/abc/response-oidc olarak döndürülür https://contoso.com/abc/response-oidc
  • Yeniden yönlendirme URI'leri özel karakterleri desteklemez - ! $ ' ( ) , ;

  • Yeniden Yönlendirme URI'leri Uluslararası Etki Alanı Adlarını desteklemiyor

Yeniden yönlendirme URI'leri ve URI uzunluğu üst sınırı

Yeniden yönlendirme URI'lerinin en fazla sayısı güvenlik nedeniyle artırılamaz. Senaryonuz izin verilen en yüksek sınırdan daha fazla yeniden yönlendirme URI'sine ihtiyaç duyuyorsa çözüm olarak aşağıdaki durum parametresi yaklaşımını göz önünde bulundurun. Aşağıdaki tabloda, Microsoft kimlik platformu bir uygulama kaydına ekleyebileceğiniz maksimum yeniden yönlendirme URI'leri sayısı gösterilmektedir.

Oturum açan hesaplar En fazla yeniden yönlendirme URI'leri sayısı Açıklama
Herhangi bir kuruluşun Microsoft Entra kiracısında Microsoft iş veya okul hesapları Kategori 256 signInAudienceuygulama bildirimindeki alanı AzureADMyOrg veya AzureADMultipleOrgs olarak ayarlanmıştır
Kişisel Microsoft hesapları, iş ve okul hesapları 100 signInAudienceuygulama bildirimindeki alanı AzureADandPersonalMicrosoftAccount olarak ayarlandı

Uygulama kaydına eklediğiniz her yeniden yönlendirme URI'sinde en fazla 256 karakter kullanabilirsiniz.

Uygulamadaki URI'leri hizmet sorumlusu nesneleriyle karşılaştırmalı olarak yeniden yönlendirme

  • Yeniden yönlendirme URI'lerini her zaman yalnızca uygulama nesnesine ekleyin.
  • Hizmet sorumlusu nesnesi uygulama nesnesiyle eşitlendiğinde bu değerler kaldırılabildiği için hiçbir zaman hizmet sorumlusuna yeniden yönlendirme URI'si değerleri eklemeyin. Bu durum, iki nesne arasında eşitleme tetikleyen herhangi bir güncelleştirme işleminden kaynaklanabilir.

Yeniden yönlendirme URI'lerinde sorgu parametresi desteği

Sorgu parametrelerine, yalnızca iş veya okul hesabı olan kullanıcılar için yeniden yönlendirme URI'lerinde izin verilir.

Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live veya Microsoft 365 gibi kişisel Microsoft hesaplarına sahip kullanıcılarla oturum açmak üzere yapılandırılmış herhangi bir uygulama kaydı için yeniden yönlendirme URI'lerinde sorgu parametrelerine izin verilmez .

Uygulama kaydı oturum açma hedef kitlesi Yeniden yönlendirme URI'sinde sorgu parametrelerini destekler
Yalnızca bu kuruluş dizinindeki hesaplar (yalnızca Contoso - Tek kiracı)
Herhangi bir kuruluş dizinindeki hesaplar (Herhangi bir Microsoft Entra dizini - Çok kiracılı)
Herhangi bir kuruluş dizinindeki hesaplar (Herhangi bir Microsoft Entra dizini - Çok Kiracılı) ve kişisel Microsoft hesapları (Skype ve Xbox gibi)
Yalnızca kişisel Microsoft hesapları

Desteklenen düzenler

HTTPS: HTTPS şeması (https://) tüm HTTP tabanlı yeniden yönlendirme URI'leri için desteklenir.

HTTP: HTTP şeması (http://) yalnızca localhost URI'leri için desteklenir ve yalnızca etkin yerel uygulama geliştirme ve test sırasında kullanılmalıdır.

Örnek yeniden yönlendirme URI'si Geçerlilik
https://contoso.com Geçerli
https://contoso.com/abc/response-oidc Geçerli
https://localhost Geçerli
http://contoso.com/abc/response-oidc Geçersiz
http://localhost Geçerli
http://localhost/abc Geçerli

Localhost özel durumları

RFC 8252 bölümleri 8.3 ve 7.3'e göre , "geri döngü" veya "localhost" yeniden yönlendirme URI'leri iki özel nokta ile birlikte gelir:

  1. http Yeniden yönlendirme hiçbir zaman cihazdan ayrılmadığından URI düzenleri kabul edilebilir. Bu nedenle, bu URI'lerin her ikisi de kabul edilebilir:
    • http://localhost/myApp
    • https://localhost/myApp
  2. Genellikle yerel uygulamalar için gereken kısa ömürlü bağlantı noktası aralıkları nedeniyle, bağlantı noktası bileşeni (örneğin, :5001 veya :443) yeniden yönlendirme URI'sini eşleştirme amacıyla yoksayılır. Sonuç olarak, bu URI'lerin tümü eşdeğer kabul edilir:
    • http://localhost/MyApp
    • http://localhost:1234/MyApp
    • http://localhost:5000/MyApp
    • http://localhost:8080/MyApp

Geliştirme açısından bakıldığında, bu birkaç anlama gelir:

  • Yalnızca bağlantı noktasının farklı olduğu birden çok yeniden yönlendirme URI'sini kaydetmeyin. Oturum açma sunucusu rastgele birini seçer ve bu yeniden yönlendirme URI'si ile ilişkili davranışı kullanır (örneğin, -, native-, veya spa-type yeniden yönlendirmesiweb).

    Bu, özellikle aynı uygulama kaydında farklı kimlik doğrulama akışları kullanmak istediğinizde (örneğin hem yetkilendirme kodu verme hem de örtük akış) önemlidir. Her yeniden yönlendirme URI'siyle doğru yanıt davranışını ilişkilendirmek için oturum açma sunucusunun yeniden yönlendirme URI'lerini ayırt edebilmesi gerekir ve yalnızca bağlantı noktası farklı olduğunda bunu yapamaz.

  • Geliştirme sırasında farklı akışları test etmek üzere localhost'a birden çok yeniden yönlendirme URI'si kaydetmek için, bunları URI'nin yol bileşenini kullanarak ayırt edin. Örneğin, http://localhost/MyWebApp ile eşleşmiyor http://localhost/MyNativeApp.

  • IPv6 geri döngü adresi ([::1]) şu anda desteklenmiyor.

Localhost yerine 127.0.0.1'i tercih edin

Yanlış yapılandırılmış güvenlik duvarları veya yeniden adlandırılmış ağ arabirimleri nedeniyle uygulamanızın bozulmasını önlemek için, yerine yeniden yönlendirme URI'nizdeki localhostIP değişmez geri döngü adresini 127.0.0.1 kullanın. Örneğin, https://127.0.0.1.

Bununla birlikte, Azure portalındaki Yeniden Yönlendirme URI'leri metin kutusunu kullanarak şemayı kullanan geri döngü tabanlı bir yeniden yönlendirme URI'sini http ekleyemezsiniz:

Azure portalında izin verilmeyen http tabanlı geri döngü yeniden yönlendirme URI'sini gösteren hata iletişim kutusu

Şemayı http geri döngü adresiyle kullanan bir yeniden yönlendirme URI'sini 127.0.0.1 eklemek için, şu anda uygulama bildiriminde replyUrlsWithType özniteliğini değiştirmeniz gerekir.

Yeniden yönlendirme URI'lerinde joker karakterlere yönelik kısıtlamalar

Gibi https://*.contoso.com joker karakter URI'leri kullanışlı görünebilir, ancak güvenlik etkilerinden dolayı kaçınılmalıdır. OAuth 2.0 belirtimine (RFC 6749'un bölüm 3.1.2) göre yeniden yönlendirme uç noktası URI'sinin mutlak bir URI olması gerekir. Bu nedenle, yapılandırılan joker karakter URI'sinin yeniden yönlendirme URI'sine eşleştiğinde, yeniden yönlendirme URI'sindeki sorgu dizeleri ve parçaları çıkarılır.

Kişisel Microsoft hesaplarında ve iş veya okul hesaplarında oturum açmak üzere yapılandırılmış uygulama kayıtlarında joker karakter URI'leri şu anda desteklenmiyor. Ancak, kuruluşun Microsoft Entra kiracısında yalnızca iş veya okul hesaplarında oturum açmak üzere yapılandırılmış uygulamalar için joker karakter URI'lerine izin verilir.

İş veya okul hesaplarında oturum açabilen uygulama kayıtlarına joker karakterler içeren yeniden yönlendirme URI'leri eklemek için Azure portalındaki Uygulama kayıtları uygulama bildirimi düzenleyicisini kullanın. Bildirim düzenleyicisini kullanarak joker karakterle yeniden yönlendirme URI'sini ayarlamak mümkün olsa da RFC 6749'un 3.1.2 bölümüne bağlı kalmanızı kesinlikle öneririz. ve yalnızca mutlak URI'leri kullanın.

Senaryonuz izin verilen en yüksek sınırdan daha fazla yeniden yönlendirme URI'sine ihtiyaç duyuyorsa joker karakter yeniden yönlendirme URI'sini eklemek yerine aşağıdaki durum parametresi yaklaşımını göz önünde bulundurun.

Durum parametresi kullanma

Birkaç alt etki alanınız varsa ve senaryonuz başarılı kimlik doğrulamasından sonra kullanıcıları başlatıldıkları sayfaya yönlendirmenizi gerektiriyorsa, durum parametresi kullanmak yararlı olabilir.

Bu yaklaşımda:

  1. Yetkilendirme uç noktasından aldığınız güvenlik belirteçlerini işlemek için uygulama başına "paylaşılan" yeniden yönlendirme URI'sini oluşturun.
  2. Uygulamanız, durum parametresinde uygulamaya özgü parametreler (kullanıcının kaynaklandığı alt etki alanı URL'si veya marka bilgileri gibi herhangi bir şey) gönderebilir. Durum parametresi kullanırken, RFC 6749'un 10.12. bölümünde belirtildiği gibi CSRF korumasına karşı koruma sağlayın.
  3. Uygulamaya özgü parametreler, uygulamanın kullanıcı için doğru deneyimi işlemesi için gereken tüm bilgileri, yani uygun uygulama durumunu oluşturmasını içerir. Microsoft Entra yetkilendirme uç noktası, HTML'yi durum parametresinden kaldırır, bu nedenle bu parametreye HTML içeriği geçirmediğinizden emin olun.
  4. Microsoft Entra Kimliği "paylaşılan" yeniden yönlendirme URI'sine bir yanıt gönderdiğinde, durum parametresini uygulamaya geri gönderir.
  5. Uygulama daha sonra kullanıcıyı daha fazla göndereceği URL'yi belirlemek için durum parametresindeki değerini kullanabilir. CSRF koruması için doğrulama yaptığınızdan emin olun.

Uyarı

Bu yaklaşım, güvenliği aşılmış bir istemcinin durum parametresinde gönderilen ek parametreleri değiştirmesine olanak tanır ve böylece kullanıcıyı RFC 6819'da açıklanan açık yeniden yönlendirici tehdidi olan farklı bir URL'ye yönlendirir. Bu nedenle, istemcinin durumu şifreleyerek veya yeniden yönlendirme URI'sindeki etki alanı adını belirteçle doğrulama gibi başka bir yolla doğrulayarak bu parametreleri koruması gerekir.

Sonraki adımlar

Uygulama kaydı Uygulama bildirimi hakkında bilgi edinin.