Omezení a omezení identifikátoru URI přesměrování (adresa URL odpovědi)

Identifikátor URI pro přesměrování nebo adresa URL odpovědi je umístění, kam autorizační server přesměruje uživatele po úspěšné autorizaci a udělení autorizačního kódu nebo přístupového tokenu. Autorizační server pošle kód nebo token na adresu URI přesměrování, takže je důležité, abyste v rámci procesu registrace aplikace zaregistrovali správné umístění.

Aplikační model Microsoft Entra určuje tato omezení pro přesměrování identifikátorů URI:

  • Identifikátory URI přesměrování musí začínat schématem https. Existují některé výjimky pro identifikátory 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. Například 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 – ! $ ' ( ) , ;

Maximální počet identifikátorů URI přesměrování

Tato tabulka ukazuje 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.

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.

Maximální délka identifikátoru URI

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

  • Identifikátory URI pro přesměrování vždy přidávejte pouze k objektu aplikace.
  • Nepřidávejte hodnoty identifikátorů URI pro přesměrování k instančnímu objektu, protože během synchronizace instančního objektu s objektem aplikace se tyto hodnoty můžou odebrat. Může k tomu dojít v důsledku jakékoli operace 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 (libovolný adresář Microsoft Entra – Víceklient) a osobní účty Microsoft (např. Skype, 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šit 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

Chcete-li zabránit přerušení aplikace chybně nakonfigurovanými branami firewall nebo přejmenovanými síťovými rozhraními, použijte místo toho adresu 127.0.0.1 zpětné smyčky literálu PROTOKOLU IP v identifikátoru localhostURI 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:

Error dialog in Azure portal showing disallowed http-based loopback redirect URI

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 budou obsahovat 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.

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.