Přehled a omezení identifikátoru URI přesměrování (adresa URL odpovědi)
Pokud se chcete přihlásit uživatele, musí vaše aplikace odeslat žádost o přihlášení do koncového bodu autorizace Microsoft Entra s identifikátorem URI přesměrování zadaným jako parametr. Identifikátor URI přesměrování je důležitá funkce zabezpečení, která zajišťuje, že ověřovací server Microsoft Entra odesílá autorizační kódy a přístupové tokeny určenému příjemci. Tento článek popisuje funkce a omezení identifikátorů URI přesměrování na platformě Microsoft Identity Platform.
Co je identifikátor URI přesměrování?
Identifikátor URI přesměrování nebo adresa URL odpovědi je umístění, kam ověřovací server Microsoft Entra odešle uživatele, jakmile uživatel úspěšně autorizoval a byl udělen přístupový token. Pokud se chcete přihlásit uživatele, musí vaše aplikace odeslat žádost o přihlášení s identifikátorem URI přesměrování zadaným jako parametr, takže po úspěšném přihlášení uživatele ověřovací server přesměruje uživatele a vydá přístupový token na identifikátor URI přesměrování zadaný v žádosti o přihlášení.
Proč je potřeba do registrace aplikace přidat identifikátory URI přesměrování?
Z bezpečnostních důvodů ověřovací server nepřesměruje uživatele ani neodesílá tokeny na identifikátor URI, který není přidaný do registrace aplikace. Přihlašovací servery Microsoft Entra přesměrují pouze uživatele a odesílají tokeny pro přesměrování identifikátorů URI, které byly přidány do registrace aplikace. Pokud identifikátor URI přesměrování zadaný v žádosti o přihlášení neodpovídá žádnému z identifikátorů URI přesměrování, které jste do aplikace přidali, zobrazí se chybová zpráva, například AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application
.
Další informace o kódech chyb naleznete v tématu Ověřování a autorizační kódy microsoft Entra.
Mám do registrace aplikace přidat identifikátor URI přesměrování?
To, jestli byste do registrace aplikace měli přidat identifikátor URI přesměrování, závisí na autorizačním protokolu, který vaše aplikace používá. Pokud vaše aplikace používá následující autorizační protokoly, musíte do registrace aplikace přidat odpovídající identifikátory URI přesměrování:
- Tok kódu při autorizaci OAuth 2.0
- Tok přihlašovacích údajů klienta OAuth 2.0
- Implicitní tok udělení OAuth 2.0
- OpenID Connect
- Protokol SAML pro jednotné přihlašování
Pokud vaše aplikace používá následující autorizační protokoly nebo funkce, nemusíte do registrace aplikace přidávat identifikátory URI pro přesměrování.
- Nativní ověřování
- Tok kódu zařízení OAuth 2.0
- Tok OAuth 2.0 On-Behalf-Of
- Tok přihlašovacích údajů vlastníka prostředku OAuth 2.0
- Tok integrovaného ověřování windows
- Zprostředkovatel identity SAML 2.0 (IdP) pro Jednotné přihlašování
Ke které platformě mám přidat svoje identifikátory URI přesměrování?
Pokud aplikace, kterou vytváříte, obsahuje v registraci aplikace jednu nebo více identifikátorů URI přesměrování, musíte povolit konfiguraci toku veřejného klienta. Následující tabulky obsahují pokyny k typu identifikátoru URI přesměrování, který byste měli nebo neměli přidávat na základě platformy, na které aplikaci vytváříte.
Konfigurace identifikátoru URI přesměrování webové aplikace
Typ aplikace | Typické jazyky nebo architektury | Platforma pro přidání identifikátoru URI přesměrování v registraci aplikace |
---|---|---|
Tradiční webová aplikace, ve které se většina aplikační logiky provádí na serveru | Node.js, web, ASP.NET, Python, Java, ASP.NET Core, PHP, Ruby, Blazor Server | Web |
Jednostráková aplikace, ve které se většina logiky uživatelského rozhraní provádí ve webovém prohlížeči, která komunikuje s webovým serverem primárně pomocí webových rozhraní API | JavaScript, Angular, React, Blazor WebAssembly, Vue.js | Jednostránkové aplikace (SPA) |
Konfigurace identifikátoru URI přesměrování mobilních a desktopových aplikací
Typ aplikace | Typické jazyky nebo architektury | Platforma pro přidání identifikátoru URI přesměrování v registraci aplikace |
---|---|---|
Aplikace pro iOS nebo macOS s výjimkou scénářů uvedených pod touto tabulkou | Swift, Objective-C, Xamarin | IOS/macOS |
Aplikace pro Android | Java, Kotlin, Xamarin | Android |
Aplikace, která běží nativně na mobilním zařízení nebo na stolním počítači | Node.js elektron, Desktop pro Windows, UPW, React Native, Xamarin, Android, iOS/macOS | Mobilní a desktopové aplikace |
Pokud vytváříte aplikaci pro iOS pomocí jedné z následujících metod, přidejte identifikátor URI přesměrování pomocí platformy Mobilní a desktopové aplikace :
- Aplikace pro iOS využívající starší sady SDK (ADAL)
- Aplikace pro iOS využívající opensourcové sady SDK (AppAuth)
- Aplikace pro iOS využívající multiplatpové technologie, které nepodporujeme (Flutter)
- Aplikace pro iOS implementuje naše protokoly OAuth přímo
- Aplikace pro macOS využívající multiplatplatové technologie, které nepodporujeme (Elektron)
Aplikace, které nevyžadují identifikátor URI přesměrování
Typ aplikace | Příklady/poznámky | Přidružený tok OAuth |
---|---|---|
Aplikace spuštěné na zařízeních, která nemají klávesnici | Aplikace běžící na inteligentní TV, zařízení IoT nebo tiskárně | Další informace o toku kódu zařízení |
Aplikace, které zpracovávají hesla, zadávají přímo místo přesměrování uživatelů na přihlašovací web hostovaný entra a umožňují entra zpracovávat uživatelské heslo zabezpečeným způsobem. | Tento tok byste měli použít jenom v případě, že jiné bezpečnější toky, jako je tok autorizačního kódu, není možné použít, protože není tak zabezpečený. | Další informace o toku přihlašovacích údajů vlastníka prostředku |
Desktopové nebo mobilní aplikace spuštěné ve Windows nebo na počítači připojeném k doméně Windows (ad nebo připojené k Azure AD) pomocí integrovaného toku ověřování Windows místo správce webových účtů | Desktopová nebo mobilní aplikace, která by se měla automaticky přihlásit po přihlášení uživatele k počítači s Windows pomocí přihlašovacích údajů Entra | Další informace o integrovaném ověřovacím toku Windows |
Jaká jsou omezení identifikátorů URI přesměrování pro aplikace Microsoft Entra?
Aplikační model Microsoft Entra určuje následující omezení pro přesměrování identifikátorů URI:
Identifikátory URI přesměrování musí začínat schématem
https
, s výjimkami některých identifikátorů URI přesměrování místního hostitele .Identifikátory URI pro přesměrování rozlišují malá a velká písmena a musí odpovídat případu cesty URL spuštěné aplikace.
Příklady:
- Pokud vaše aplikace obsahuje jako součást své cesty
.../abc/response-oidc
, nezadávejte.../ABC/response-oidc
v identifikátoru URI přesměrování. Vzhledem k tomu, že webový prohlížeč pracuje s cestami jako s rozlišováním velkých a malých písmen, mohou být soubory cookie přidružené.../abc/response-oidc
k souborům cookie vyloučeny, pokud jsou přesměrovány na neodpovídající.../ABC/response-oidc
adresu URL.
- Pokud vaše aplikace obsahuje jako součást své cesty
Identifikátory URI přesměrování, které nejsou nakonfigurované se segmentem cesty, se v odpovědi vrátí koncové lomítko (
/
'). To platí pouze v případě, že jequery
režim odezvy nebofragment
.Příklady:
https://contoso.com
vrátí se jakohttps://contoso.com/
http://localhost:7071
vrátí se jakohttp://localhost:7071/
Identifikátory URI přesměrování, které obsahují segment cesty, nejsou v odpovědi připojeny koncové lomítko.
Příklady:
https://contoso.com/abc
vrátí se jakohttps://contoso.com/abc
https://contoso.com/abc/response-oidc
vrátí se jakohttps://contoso.com/abc/response-oidc
Identifikátory URI pro přesměrování nepodporují speciální znaky –
! $ ' ( ) , ;
Identifikátory URI pro přesměrování nepodporují mezinárodní názvy domén
Maximální počet identifikátorů URI přesměrování a délka identifikátoru URI
Maximální počet identifikátorů URI pro přesměrování nejde zvýšit z bezpečnostních důvodů. Pokud váš scénář vyžaduje více identifikátorů URI přesměrování, než je povolené maximální omezení, zvažte jako řešení následující přístup parametrů stavu. Následující tabulka uvádí maximální počet identifikátorů URI přesměrování, které můžete přidat k registraci aplikace na platformě Microsoft Identity Platform.
Účty, které jsou přihlášené | Maximální počet identifikátorů URI přesměrování | Popis |
---|---|---|
Pracovní nebo školní účty Microsoftu v tenantovi Microsoft Entra jakékoli organizace | 256 | signInAudience pole v manifestu aplikace je nastaveno na AzureADMyOrg nebo AzureADMultipleOrgs. |
Osobní účty Microsoft a pracovní a školní účty | 100 | signInAudience pole v manifestu aplikace je nastaveno na AzureADandPersonalMicrosoftAccount. |
Pro každý identifikátor URI přesměrování, který přidáte do registrace aplikace, můžete použít maximálně 256 znaků.
Identifikátory URI přesměrování v aplikacích a instančních objektech
- Vždy přidejte identifikátory URI přesměrování pouze do objektu aplikace.
- Nikdy nepřidávejte hodnoty identifikátoru URI přesměrování do instančního objektu, protože tyto hodnoty je možné odebrat, když se instanční objekt synchronizuje s objektem aplikace. K tomu může dojít kvůli jakékoli operaci aktualizace, která aktivuje synchronizaci mezi těmito dvěma objekty.
Podpora parametrů dotazu v identifikátorech URI přesměrování
Parametry dotazu jsou povoleny v identifikátorech URI přesměrování pro aplikace, které se přihlašují jenom uživatelům pomocí pracovních nebo školních účtů.
Parametry dotazu nejsou povoleny v identifikátorech URI přesměrování pro žádnou registraci aplikace nakonfigurovanou pro přihlášení uživatelů pomocí osobních účtů Microsoft, jako jsou Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live nebo Microsoft 365.
Přihlašovací cílová skupina registrace aplikace | Podporuje parametry dotazu v identifikátoru URI přesměrování. |
---|---|
Pouze účty v tomto organizačním adresáři (jenom Contoso – jeden tenant) | |
Účty v organizačním adresáři (jakýkoli adresář Microsoft Entra – víceklientský) | |
Účty v libovolném organizačním adresáři (jakýkoli adresář Microsoft Entra – Víceklient) a osobní účty Microsoft (například Skype a Xbox) | |
Pouze osobní účty Microsoft |
Podporovaná schémata
HTTPS: Schéma HTTPS (https://
) je podporováno pro všechny identifikátory URI přesměrování založené na protokolu HTTP.
HTTP: Schéma HTTP (http://
) je podporováno pouze pro identifikátory URI místního hostitele a mělo by se používat pouze při aktivním vývoji a testování místních aplikací.
Příklad identifikátoru URI přesměrování | Platnost |
---|---|
https://contoso.com |
Platné |
https://contoso.com/abc/response-oidc |
Platné |
https://localhost |
Platné |
http://contoso.com/abc/response-oidc |
Neplatný |
http://localhost |
Platné |
http://localhost/abc |
Platné |
Výjimky místního hostitele
V bodech 8.3 a 7.3 najdete identifikátory URI přesměrování RFC 8252 a 7.3, zpětné smyčky nebo identifikátory URI pro přesměrování localhost se dvěma zvláštními aspekty:
http
Schémata identifikátoru URI jsou přijatelná, protože přesměrování nikdy neopustí zařízení. Proto jsou obě tyto identifikátory URI přijatelné:http://localhost/myApp
https://localhost/myApp
- Vzhledem k dočasným rozsahům portů, které nativní aplikace často vyžadují, je komponenta portu (například
:5001
nebo:443
) ignorována pro účely párování identifikátoru URI přesměrování. V důsledku toho jsou všechny tyto identifikátory URI považovány za ekvivalentní:http://localhost/MyApp
http://localhost:1234/MyApp
http://localhost:5000/MyApp
http://localhost:8080/MyApp
Z hlediska vývoje to znamená několik věcí:
Nezaregistrujte více identifikátorů URI přesměrování, kde se liší pouze port. Přihlašovací server vybere jednu libovolně a použije chování spojené s tímto identifikátorem URI přesměrování (například jestli se jedná o
web
přesměrování -,native
-nebospa
-type redirect).To je zvlášť důležité, pokud chcete použít různé toky ověřování ve stejné registraci aplikace, například udělení autorizačního kódu i implicitní tok. Aby bylo možné přidružit správné chování odpovědi ke každému identifikátoru URI přesměrování, musí být přihlašovací server schopný rozlišovat identifikátory URI přesměrování a nemůže to provést, pokud se liší jenom port.
Pokud chcete zaregistrovat více identifikátorů URI přesměrování na místním hostiteli, abyste během vývoje otestovali různé toky, odlište je pomocí komponenty cesty identifikátoru URI.
http://localhost/MyWebApp
Například neodpovídáhttp://localhost/MyNativeApp
.Adresa zpětné smyčky IPv6 (
[::1]
) se v současné době nepodporuje.
Preferovat 127.0.0.1 před místním hostitelem
Pokud chcete aplikaci zabránit v přerušení kvůli chybně nakonfigurovaným branám firewall nebo přejmenovaným síťovým rozhraním, použijte místo toho adresu 127.0.0.1
zpětné smyčky literálu PROTOKOLU IP v identifikátoru localhost
URI pro přesměrování. Například https://127.0.0.1
.
Textové pole Identifikátory URI pro přesměrování na webu Azure Portal ale nemůžete použít k přidání identifikátoru URI přesměrování založeného na zpětné smyčce, který používá http
schéma:
Chcete-li přidat identifikátor URI přesměrování, který používá http
schéma s 127.0.0.1
adresou zpětné smyčky, musíte v manifestu aplikace aktuálně upravit atribut replyUrlsWithType.
Omezení zástupných znaků v identifikátorech URI přesměrování
Identifikátory URI zástupných znaků se https://*.contoso.com
můžou zdát pohodlné, ale měly by se vyhnout z důvodu bezpečnostních dopadů. Podle specifikace OAuth 2.0 (oddíl 3.1.2 RFC 6749) musí být identifikátor URI koncového bodu přesměrování absolutní identifikátor URI. Pokud nakonfigurovaný identifikátor URI se zástupnými znaky odpovídá identifikátoru URI přesměrování, řetězce dotazu a fragmenty v identifikátoru URI přesměrování se odstraní.
Identifikátory URI se v současné době nepodporují v registracích aplikací nakonfigurovaných pro přihlášení k osobním účtům Microsoft a pracovním nebo školním účtům. Identifikátory URI se zástupnými znaménkami jsou ale povolené pro aplikace, které jsou nakonfigurované tak, aby se přihlašovaly jenom k pracovním nebo školním účtům v tenantovi Microsoft Entra organizace.
Pokud chcete přidat identifikátory URI přesměrování se zástupnými znaménkami do registrací aplikací, které se přihlašují do pracovních nebo školních účtů, použijte editor manifestu aplikace v Registrace aplikací na webu Azure Portal. I když je možné nastavit identifikátor URI přesměrování se zástupným znakem pomocí editoru manifestu, důrazně doporučujeme dodržovat část 3.1.2 DOKUMENTU RFC 6749. a používejte pouze absolutní identifikátory URI.
Pokud váš scénář vyžaduje více identifikátorů URI přesměrování, než je povolený maximální limit, zvažte místo přidání identifikátoru URI přesměrování zástupných znaků následující přístup k parametru stavu.
Použití parametru stavu
Pokud máte několik subdomén a váš scénář vyžaduje, abyste po úspěšném ověření přesměrovali uživatele na stejnou stránku, ze které začali, může být užitečné použít parametr stavu.
V tomto přístupu:
- Vytvořte identifikátor URI přesměrování sdílené na aplikaci, který zpracuje tokeny zabezpečení, které obdržíte z autorizačního koncového bodu.
- Vaše aplikace může posílat parametry specifické pro aplikaci (například subdoménu URL, kde uživatel pochází nebo něco jako informace o značce) v parametru stavu. Při použití parametru stavu chraňte před ochranou CSRF podle bodu 10.12 dokumentu RFC 6749.
- Parametry specifické pro aplikaci zahrnují všechny informace potřebné k vykreslení správného prostředí pro uživatele, tj. vytvoření příslušného stavu aplikace. Koncový bod autorizace Microsoft Entra odstraní kód HTML z parametru stavu, takže se ujistěte, že v tomto parametru nepředáváte obsah HTML.
- Když Microsoft Entra ID odešle odpověď na identifikátor URI přesměrování "shared", odešle parametr stavu zpět do aplikace.
- Aplikace pak může použít hodnotu v parametru stavu k určení adresy URL k dalšímu odeslání uživatele. Ujistěte se, že jste ověřili ochranu CSRF.
Upozorňující
Tento přístup umožňuje napadenému klientovi upravit další parametry odeslané v parametru stavu, čímž přesměruje uživatele na jinou adresu URL, což je hrozba otevřeného přesměrovače popsaná v DOKUMENTU RFC 6819. Klient proto musí tyto parametry chránit zašifrováním stavu nebo ověřením jiným způsobem, například ověřením názvu domény v identifikátoru URI pro přesměrování tokenu.
Další kroky
Přečtěte si o manifestu aplikace registrace aplikace.