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 application
bir 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:
- OAuth 2.0 yetkilendirme kod akışı
- OAuth 2.0 istemci kimlik bilgileri akışı
- OAuth 2.0 örtük verme akışı
- OpenID Connect
- Çoklu oturum açma SAML protokolü
Uygulamanız aşağıdaki yetkilendirme protokollerini veya özelliklerini kullanıyorsa, uygulama kaydınıza yeniden yönlendirme URI'leri eklemeniz gerekmez.
- Yerel Kimlik Doğrulaması
- OAuth 2.0 cihaz kodu akışı
- OAuth 2.0 Adına akış
- OAuth 2.0 Kaynak sahibi parola kimlik bilgisi akışı
- Windows Tümleşik Kimlik Doğrulama Akışı
- Çoklu Oturum Açma için SAML 2.0 Kimlik Sağlayıcısı (IdP)
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
https
baş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-oidc
bir 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.
- Uygulamanız yolunun
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 veyafragment
olduğundaquery
geçerlidir.Örnekler:
https://contoso.com
olarak döndürülürhttps://contoso.com/
http://localhost:7071
olarak döndürülürhttp://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ürhttps://contoso.com/abc
https://contoso.com/abc/response-oidc
olarak döndürülürhttps://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 | signInAudience uygulama bildirimindeki alanı AzureADMyOrg veya AzureADMultipleOrgs olarak ayarlanmıştır |
Kişisel Microsoft hesapları, iş ve okul hesapları | 100 | signInAudience uygulama 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:
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
- 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
-, veyaspa
-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şmiyorhttp://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 localhost
IP 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:
Ş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:
- 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.
- 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.
- 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.
- Microsoft Entra Kimliği "paylaşılan" yeniden yönlendirme URI'sine bir yanıt gönderdiğinde, durum parametresini uygulamaya geri gönderir.
- 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.