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 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 –
! $ ' ( ) , ;
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:
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š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 localhost
URI 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 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.
- 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.