Sdílet prostřednictvím


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í:

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í.

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.
  • 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 je query režim odezvy nebo fragment.

    Příklady:

    • https://contoso.com vrátí se jako https://contoso.com/
    • http://localhost:7071 vrátí se jako http://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 jako https://contoso.com/abc
    • https://contoso.com/abc/response-oidc vrátí se jako https://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 libovolném organizačním adresáři (libovolný adresář Microsoft Entra – Víceklient)
Úč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:

  1. 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
  2. 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 webpřesměrování -, native-nebo spa-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 localhostURI 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:

Chybové dialogové okno na webu Azure Portal s nepovoleným identifikátorem URI přesměrování zpětné smyčky http

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:

  1. 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.
  2. 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.
  3. 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.
  4. Když Microsoft Entra ID odešle odpověď na identifikátor URI přesměrování "shared", odešle parametr stavu zpět do aplikace.
  5. 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 manifestu aplikace registrace aplikace.