Přehled a omezení přesměrovací URI (URL odpovědi)
Pro přihlášení uživatele musí vaše aplikace odeslat žádost o přihlášení koncovému 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ý prvek zabezpečení, který zajišťuje, že ověřovací server Microsoft Entra odesílá autorizační kódy a přístupové tokeny pouze určenému příjemci. Tento článek popisuje funkce a omezení přesměrovacích URI na platformě Microsoft Identity.
Co je identifikátor URI přesměrování?
Identifikátor URI přesměrování nebo adresa URL odpovědi je místo, kam ověřovací server Microsoft Entra odešle uživatele, jakmile úspěšně provedli autorizaci a obdrží 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í.
Například v produkční webové aplikaci je identifikátor URI přesměrování často veřejnou koncovou adresou, na které je vaše aplikace spuštěná, například https://contoso.com/auth-response
. Během vývoje je také běžné přidat koncový bod, ve kterém aplikaci spouštíte místně, například https://127.0.0.1/auth-response
nebo http://localhost/auth-response
. Ujistěte se, že žádná zbytečná vývojová prostředí ani identifikátory URI přesměrování nejsou v produkční aplikaci odhalené. Můžete to provést tak, že budete mít samostatné registrace aplikací pro vývoj a produkci.
Proč je potřeba do registrace aplikace přidat URI pro 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ěrovávají uživatele a odesílají tokeny pouze na URI pro přesměrování, 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 Kódy chyb ověřování a autorizace Microsoft Entra.
Mám přidat adresu přesměrování URI do registrace aplikace?
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 autorizace OAuth 2.0
- Proces 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í
- Proces kódu zařízení OAuth 2.0
- Tok OAuth 2.0 jménem jiného
- Tok přihlašovacích údajů vlastníka prostředku OAuth 2.0
- Integrovaný ověřovací tok Windows
- Poskytovatel identity SAML 2.0 (IdP) pro jednotné přihlášení
Ke které platformě mám přidat svůj přesměrovací URI?
Pokud aplikace, kterou vytváříte, obsahuje v registraci aplikace jednu nebo více přesměrovacích URI, 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í přesměrovacího URI při 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 URI pro přesměrování mobilních a desktopových aplikací
Typ aplikace | Typické jazyky nebo architektury | Platforma pro přidání 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 Electron, Windows Desktop, UWP, React Native, Xamarin, Android, iOS/macOS | Mobilní a desktopové aplikace |
Pokud vytváříte aplikaci pro iOS pomocí jedné z následujících metod, použijte platformu Mobilní a desktopové aplikace pro přidání přesměrovací URI.
- 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í multiplatformní technologie, které nepodporujeme (Flutter)
- Aplikace pro iOS implementuje naše protokoly OAuth přímo
- Aplikace pro macOS využívající multiplatformní technologie, které nepodporujeme (Electron)
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 přímo zadaná uživateli, místo aby přesměrovaly uživatele na přihlašovací web hostovaný na Entra a umožnily Entra zpracovat uživatelské heslo bezpečný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 (s doménou Active Directory nebo Azure AD) při použití Windows Integrated Authentication Flow 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í URI k 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 případově citlivými, mohou být soubory cookie přidružené k.../abc/response-oidc
vyloučeny, pokud jsou přesměrovány na neodpovídající.../ABC/response-oidc
adresu URL s velikostí písmen.
- Pokud vaše aplikace obsahuje jako součást své cesty
Identifikátory URI přesměrování, které nejsou konfigurovány se segmentem cesty, se v odpovědi vracejí s koncovým lomítkem ('/'). To platí pouze v případě, že je
query
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 opatřeny koncovým lomítkem.
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 –
! $ ' ( ) , ;
Přesměrovací URI nepodporují mezinárodní názvy domén
Maximální počet přesměrovacích URI a jejich délka 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 následující přístup parametr stavu jako řešení. 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 přesměrovacích URI | 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 objektech hlavní služby
- Vždy přidejte přesměrovací URI pouze do objektu aplikace.
- Nikdy nepřidávejte hodnoty identifikátoru URI přesměrování do služebního principálu, protože tyto hodnoty mohou být odebrány, když se služební principál 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 dotazových parametrů v přesměrovacích URI
Dotazové parametry jsou povoleny v identifikátorech URI přesměrování pro aplikace, které přihlašují pouze uživatele s pracovními nebo školními účty.
Parametry dotazu nejsou povoleny v přesměrovací URI pro žádné registrace aplikace nakonfigurované k přihlášení uživatelů pomocí osobních Microsoft účtů, jako jsou Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live nebo Microsoft 365.
Cílová skupina pro přihlášení při registraci aplikace | Podporuje dotazové parametry v identifikátoru přesměrování URI. |
---|---|
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
Dle RFC 8252, sekcí 8.3 a 7.3 mají URI adresy přesměrování pro "loopback" nebo "localhost" dvě zvláštní úvahy.
-
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 URI pro přesměrování, pokud 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
-přesměrování, nebospa
-přesměrování typu).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
Aby se zabránilo přerušení vaší aplikace kvůli chybně nakonfigurovaným firewallům nebo přejmenovaným síťovým rozhraním, použijte v URI pro přesměrování místo toho IP adresu zpětné smyčky 127.0.0.1
místo localhost
. Například https://127.0.0.1
.
Textové pole pro přesměrování URI na webu Azure Portal ale nemůžete použít k přidání přesměrovacího URI 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 aktuálně upravit atribut replyUrlsWithType v manifestu aplikace.
Omezení zástupných znaků v adresách URI přesměrování
Zástupné URI jako https://*.contoso.com
se mohou zdát pohodlné, ale mělo by se jim vyhnout kvůli bezpečnostním rizikům. 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í.
V současné době nejsou zástupné URI podporovány 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 adresy URL přesměrování se zástupnými znaky do registrací aplikací pro přihlašování do pracovních nebo školních účtů, použijte editor manifestu aplikace v Registrace aplikací v Azure Portal. I když je možné nastavit identifikátor přesměrování URI 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 přesměrovacích URI, než je povolen maximální limit, zvažte místo přidání zástupného přesměrovacího URI využití následujícího přístupu s parametrem 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 sdílený identifikátor URI pro přesměrování pro každou aplikaci, aby zpracovával bezpečnostní tokeny, 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 zabezpečte proti CSRF útokům 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 přesměrování na identifikátor URI „shared“, odešle parametr stavu zpět aplikaci.
- 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.
Varování
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 registraci aplikace manifeste aplikace.