Beperkingen en beperkingen voor omleidings-URI (antwoord-URL)
Een omleidings-URI, of antwoord-URL, is de locatie waar de autorisatieserver de gebruiker naartoe stuurt zodra de app is geautoriseerd en een autorisatiecode of toegangstoken heeft ontvangen. De autorisatieserver stuurt de code of het token naar de omleidings-URI, dus het is belangrijk dat u de juiste locatie registreert als onderdeel van het app-registratieproces.
Het Microsoft Entra-toepassingsmodel specificeert deze beperkingen voor omleidings-URI's:
Omleidings-URI's moeten beginnen met het schema
https
. Er zijn enkele uitzonderingen voor localhost-omleidings-URI's .Omleidings-URI's zijn hoofdlettergevoelig en moeten overeenkomen met het geval van het URL-pad van uw actieve toepassing. Als uw toepassing bijvoorbeeld deel uitmaakt van het pad
.../abc/response-oidc
, geeft u deze niet op.../ABC/response-oidc
in de omleidings-URI. Omdat de webbrowser paden als hoofdlettergevoelig behandelt, kunnen cookies die zijn gekoppeld aan.../abc/response-oidc
worden uitgesloten als ze worden omgeleid naar de qua hoofdlettergebruik niet-overeenkomende URL.../ABC/response-oidc
.Omleidings-URI's die niet zijn geconfigureerd met een padsegment, worden geretourneerd met een afsluitende slash (''
/
) in het antwoord. Dit geldt alleen wanneer de reactiemodus ofquery
fragment
.Voorbeelden:
https://contoso.com
wordt geretourneerd alshttps://contoso.com/
http://localhost:7071
wordt geretourneerd alshttp://localhost:7071/
Omleidings-URI's die een padsegment bevatten, worden niet toegevoegd aan een afsluitende slash in het antwoord.
Voorbeelden:
https://contoso.com/abc
wordt geretourneerd alshttps://contoso.com/abc
https://contoso.com/abc/response-oidc
wordt geretourneerd alshttps://contoso.com/abc/response-oidc
Omleidings-URI's bieden geen ondersteuning voor speciale tekens -
! $ ' ( ) , ;
Maximum aantal omleidings-URI's
In deze tabel ziet u het maximum aantal omleidings-URI's dat u kunt toevoegen aan een app-registratie in het Microsoft Identity Platform.
Accounts die worden aangemeld | Maximum aantal omleidings-URI's | Beschrijving |
---|---|---|
Microsoft-werk- of schoolaccounts in de Microsoft Entra-tenant van een organisatie | 256 | signInAudience het veld in het toepassingsmanifest is ingesteld op AzureADMyOrg of AzureADMultipleOrgs |
Persoonlijke Microsoft-accounts en werk- en schoolaccounts | 100 | signInAudience het veld in het toepassingsmanifest is ingesteld op AzureADandPersonalMicrosoftAccount |
Het maximum aantal omleidings-URI's kan om veiligheidsredenen niet worden verhoogd. Als voor uw scenario meer omleidings-URI's zijn vereist dan de toegestane maximumlimiet, kunt u de volgende methode voor statusparameters overwegen als de oplossing.
Maximale URI-lengte
U kunt maximaal 256 tekens gebruiken voor elke omleidings-URI die u toevoegt aan een app-registratie.
Omleidings-URI's in toepassing versus service-principal-objecten
- Voeg altijd alleen omleidings-URI's toe aan het toepassingsobject.
- Voeg geen omleidings-URI-waarden toe aan een service-principal, omdat deze waarden kunnen worden verwijderd wanneer het service-principalobject wordt gesynchroniseerd met het toepassingsobject. Dit kan gebeuren als gevolg van een updatebewerking die een synchronisatie tussen de twee objecten activeert.
Ondersteuning voor queryparameters in omleidings-URI's
Queryparameters zijn toegestaan in omleidings-URI's voor toepassingen die alleen gebruikers aanmelden met werk- of schoolaccounts.
Queryparameters zijn niet toegestaan in omleidings-URI's voor app-registratie die is geconfigureerd om gebruikers aan te melden met persoonlijke Microsoft-accounts, zoals Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live of Microsoft 365.
Aanmeldingsdoelgroep voor app-registratie | Ondersteunt queryparameters in omleidings-URI |
---|---|
Alleen accounts in deze organisatiemap (alleen Contoso - één tenant) | |
Accounts in een organisatiedirectory (alle Microsoft Entra-directory's - meerdere tenants) | |
Accounts in elke organisatiedirectory (Elke Microsoft Entra-directory - Multitenant) en persoonlijke Microsoft-accounts (bijvoorbeeld Skype, Xbox) | |
Alleen persoonlijke Microsoft-accounts |
Ondersteunde schema's
HTTPS: Het HTTPS-schema (https://
) wordt ondersteund voor alle omleidings-URI's op basis van HTTP.
HTTP: Het HTTP-schema (http://
) wordt alleen ondersteund voor localhost-URI's en mag alleen worden gebruikt tijdens het ontwikkelen en testen van actieve lokale toepassingen.
Voorbeeld van omleidings-URI | Geldigheid |
---|---|
https://contoso.com |
Geldig |
https://contoso.com/abc/response-oidc |
Geldig |
https://localhost |
Geldig |
http://contoso.com/abc/response-oidc |
Ongeldig |
http://localhost |
Geldig |
http://localhost/abc |
Geldig |
Localhost-uitzonderingen
Per RFC 8252-secties 8.3 en 7.3 worden omleidings-URI's voor loopback of localhost met twee speciale overwegingen geleverd:
http
URI-schema's zijn acceptabel omdat de omleiding het apparaat nooit verlaat. Daarom zijn beide URI's acceptabel:http://localhost/myApp
https://localhost/myApp
- Vanwege tijdelijke poortbereiken die vaak vereist zijn voor systeemeigen toepassingen, wordt het poortonderdeel (bijvoorbeeld
:5001
of:443
) genegeerd om een omleidings-URI te koppelen. Als gevolg hiervan worden al deze URI's beschouwd als gelijkwaardig:http://localhost/MyApp
http://localhost:1234/MyApp
http://localhost:5000/MyApp
http://localhost:8080/MyApp
Vanuit het oogpunt van ontwikkeling betekent dit een aantal dingen:
Registreer niet meerdere omleidings-URI's waarbij alleen de poort verschilt. De aanmeldingsserver kiest er willekeurig een en gebruikt het gedrag dat is gekoppeld aan die omleidings-URI (bijvoorbeeld of het omleidings
web
-,native
-- ofspa
-type-omleiding is).Dit is vooral belangrijk wanneer u verschillende verificatiestromen in dezelfde toepassingsregistratie wilt gebruiken, bijvoorbeeld zowel de autorisatiecodetoestemming als de impliciete stroom. Als u het juiste reactiegedrag wilt koppelen aan elke omleidings-URI, moet de aanmeldingsserver onderscheid kunnen maken tussen de omleidings-URI's en dit niet kunnen doen wanneer alleen de poort verschilt.
Als u meerdere omleidings-URI's op localhost wilt registreren om verschillende stromen tijdens de ontwikkeling te testen, moet u deze onderscheiden met behulp van het padonderdeel van de URI. Komt bijvoorbeeld
http://localhost/MyWebApp
niet overeenhttp://localhost/MyNativeApp
.Het IPv6-loopbackadres (
[::1]
) wordt momenteel niet ondersteund.
Liever 127.0.0.1 via localhost
Als u wilt voorkomen dat uw app wordt verbroken door onjuist geconfigureerde firewalls of netwerkinterfaces waarvan de naam is gewijzigd, gebruikt u het IP-letterlijke loopback-adres 127.0.0.1
in uw omleidings-URI in plaats van localhost
. Bijvoorbeeld https://127.0.0.1
.
U kunt echter het tekstvak Omleidings-URI's in Azure Portal niet gebruiken om een omleidings-URI op basis van loopback toe te voegen die gebruikmaakt van het http
schema:
Als u een omleidings-URI wilt toevoegen die gebruikmaakt van het http
schema met het 127.0.0.1
loopback-adres, moet u momenteel het kenmerk replyUrlsWithType in het toepassingsmanifest wijzigen.
Beperkingen voor jokertekens in omleidings-URI's
Jokerteken-URI's https://*.contoso.com
lijken handig, maar moeten worden vermeden vanwege gevolgen voor de beveiliging. Volgens de OAuth 2.0-specificatie (sectie 3.1.2 van RFC 6749) moet een omleidingseindpunt-URI een absolute URI zijn. Als een geconfigureerde jokerteken-URI overeenkomt met een omleidings-URI, worden queryreeksen en fragmenten in de omleidings-URI verwijderd.
Jokerteken-URI's worden momenteel niet ondersteund in app-registraties die zijn geconfigureerd voor het aanmelden van persoonlijke Microsoft-accounts en werk- of schoolaccounts. Jokerteken-URI's zijn echter toegestaan voor apps die zijn geconfigureerd om alleen werk- of schoolaccounts aan te melden in de Microsoft Entra-tenant van een organisatie.
Als u omleidings-URI's met jokertekens wilt toevoegen aan app-registraties die zich aanmelden bij werk- of schoolaccounts, gebruikt u de manifesteditor van de toepassing in App-registraties in Azure Portal. Hoewel het mogelijk is om een omleidings-URI met een jokerteken in te stellen met behulp van de manifesteditor, raden we u ten zeerste aan om te voldoen aan sectie 3.1.2 van RFC 6749. en gebruik alleen absolute URI's.
Als voor uw scenario meer omleidings-URI's zijn vereist dan de toegestane maximumlimiet, kunt u de volgende methode voor statusparameters overwegen in plaats van een omleidings-URI met jokertekens toe te voegen.
Een statusparameter gebruiken
Als u meerdere subdomeinen hebt en uw scenario vereist dat gebruikers na een geslaagde verificatie gebruikers omleiden naar dezelfde pagina van waaruit ze zijn gestart, kan het handig zijn om een statusparameter te gebruiken.
In deze aanpak:
- Maak een 'gedeelde' omleidings-URI per toepassing om de beveiligingstokens te verwerken die u van het autorisatie-eindpunt ontvangt.
- Uw toepassing kan toepassingsspecifieke parameters (zoals de URL van het subdomein waar de gebruiker vandaan komt of iets zoals huisstijlinformatie) verzenden in de statusparameter. Wanneer u een statusparameter gebruikt, moet u zich beschermen tegen CSRF-beveiliging zoals opgegeven in sectie 10.12 van RFC 6749.
- De toepassingsspecifieke parameters bevatten alle informatie die nodig is voor de toepassing om de juiste ervaring voor de gebruiker weer te geven, dat wil gezegd, de juiste toepassingsstatus maken. Het Eindpunt voor Microsoft Entra-autorisatie verwijdert HTML van de statusparameter, dus zorg ervoor dat u geen HTML-inhoud doorgeeft in deze parameter.
- Wanneer Microsoft Entra ID een antwoord naar de omleidings-URI 'gedeeld' verzendt, wordt de statusparameter teruggestuurd naar de toepassing.
- De toepassing kan vervolgens de waarde in de statusparameter gebruiken om te bepalen naar welke URL de gebruiker verder moet worden verzonden. Zorg ervoor dat u valideert voor CSRF-beveiliging.
Waarschuwing
Met deze methode kan een gecompromitteerde client de aanvullende parameters wijzigen die in de statusparameter worden verzonden, waardoor de gebruiker wordt omgeleid naar een andere URL. Dit is de open redirector-bedreiging die wordt beschreven in RFC 6819. Daarom moet de client deze parameters beveiligen door de status te versleutelen of op een andere wijze te verifiëren, zoals het valideren van de domeinnaam in de omleidings-URI tegen het token.
Volgende stappen
Meer informatie over het toepassingsmanifest voor app-registratie.