Overzicht en beperkingen van omleidings-URI (antwoord-URL)
Als u zich wilt aanmelden bij een gebruiker, moet uw toepassing een aanmeldingsaanvraag verzenden naar het Microsoft Entra-autorisatie-eindpunt, met een omleidings-URI die is opgegeven als parameter. De omleidings-URI is een kritieke beveiligingsfunctie die ervoor zorgt dat de Microsoft Entra-verificatieserver alleen autorisatiecodes en toegangstokens naar de beoogde ontvanger verzendt. In dit artikel worden de functies en beperkingen van omleidings-URI's in het Microsoft Identity Platform beschreven.
Wat is een omleidings-URI?
Een omleidings-URI of antwoord-URL is de locatie waar de Microsoft Entra-verificatieserver de gebruiker verzendt zodra deze is geautoriseerd en een toegangstoken heeft gekregen. Als u zich wilt aanmelden bij een gebruiker, moet uw toepassing een aanmeldingsaanvraag verzenden met een omleidings-URI die is opgegeven als parameter. Nadat de gebruiker zich heeft aangemeld, wordt de gebruiker door de verificatieserver omgeleid en wordt er een toegangstoken verzonden naar de omleidings-URI die is opgegeven in de aanmeldingsaanvraag.
Waarom moeten omleidings-URI('s) worden toegevoegd aan een app-registratie?
Om veiligheidsredenen wordt de verificatieserver gebruikers niet omgeleid of tokens verzonden naar een URI die niet is toegevoegd aan de app-registratie. Microsoft Entra-aanmeldingsservers leiden alleen gebruikers om en verzenden tokens naar omleidings-URI's die zijn toegevoegd aan een app-registratie. Als de omleidings-URI die is opgegeven in de aanmeldingsaanvraag niet overeenkomt met een van de omleidings-URI's die u in uw toepassing hebt toegevoegd, ontvangt u een foutbericht zoals AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application
.
Zie Microsoft Entra-verificatie- en autorisatiefoutcodes voor meer informatie over foutcodes.
Moet ik een omleidings-URI toevoegen aan een app-registratie?
Of u een omleidings-URI aan uw app-registratie moet toevoegen, is afhankelijk van het autorisatieprotocol dat uw toepassing gebruikt. U moet de juiste omleidings-URI's toevoegen aan uw app-registratie als uw toepassing gebruikmaakt van de volgende autorisatieprotocollen:
- OAuth 2.0-autorisatiecodestroom
- OAuth 2.0-clientreferentiestroom
- Impliciete toekenningsstroom voor OAuth 2.0
- OpenID Connect
- SAML-protocol voor eenmalige aanmelding
U hoeft geen omleidings-URI's toe te voegen aan uw app-registratie als uw toepassing gebruikmaakt van de volgende autorisatieprotocollen of -functies.
- Systeemeigen verificatie
- OAuth 2.0-apparaatcodestroom
- OAuth 2.0 namens stroom
- Wachtwoordstroom voor OAuth 2.0-resource-eigenaar
- Geïntegreerde Windows-verificatiestroom
- SAML 2.0 Identity Provider (IdP) voor Single sign-on
Aan welk platform moet ik mijn omleidings-URI('s) toevoegen?
Als de toepassing die u bouwt een of meerdere omleidings-URI's bevat in uw app-registratie, moet u een configuratie van een openbare clientstroom inschakelen. De volgende tabellen bevatten richtlijnen voor het type omleidings-URI dat u moet toevoegen of niet moet toevoegen op basis van het platform waarop u uw toepassing bouwt.
Omleidings-URI-configuratie van webtoepassing
Type van uw toepassing | Typische talen/frameworks | Platform om omleidings-URI toe te voegen in app-registratie |
---|---|---|
Een traditionele webtoepassing waarbij de meeste toepassingslogica wordt uitgevoerd op de server | Node.js, web, ASP.NET, Python, Java, ASP.NET Core, PHP, Ruby, Blazor Server | Web |
Een toepassing met één pagina waarbij de meeste logica van de gebruikersinterface wordt uitgevoerd in een webbrowser die voornamelijk communiceert met de webserver met behulp van web-API's | JavaScript, Angular, React, Blazor WebAssembly, Vue.js | Toepassing met één pagina (SPA) |
Omleidings-URI-configuratie voor mobiele toepassingen en bureaubladtoepassingen
Type van uw toepassing | Typische talen/frameworks | Platform om omleidings-URI toe te voegen in app-registratie |
---|---|---|
Een iOS- of macOS-app met uitzondering van de scenario's die onder deze tabel worden vermeld | Swift, Objective-C, Xamarin | IOS/macOS |
Een Android-app | Java, Kotlin, Xamarin | Android |
Een app die systeemeigen wordt uitgevoerd op een mobiel apparaat of desktopcomputer | Node.js electron, Windows desktop, UWP, React Native, Xamarin, Android, iOS/macOS | Mobiele toepassingen en desktoptoepassingen |
Als u een iOS-app bouwt met een van de volgende methoden, gebruikt u het platform voor mobiele toepassingen en desktoptoepassingen om een omleidings-URI toe te voegen:
- iOS-apps met verouderde SDK's (ADAL)
- iOS-apps die gebruikmaken van opensource-SDK's (AppAuth)
- iOS-apps die cross-plat tech gebruiken, ondersteunen we niet (Flutter)
- iOS-apps die onze OAuth-protocollen rechtstreeks implementeren
- macOS-apps die gebruikmaken van cross-plat tech die we niet ondersteunen (Electron)
Toepassingen waarvoor geen omleidings-URI is vereist
Type toepassing | Voorbeelden/notities | Gekoppelde OAuth-stroom |
---|---|---|
Toepassingen die worden uitgevoerd op apparaten die geen toetsenbord hebben | Toepassingen die worden uitgevoerd op smart tv, IoT-apparaat of een printer | Meer informatie over apparaatcodestroom |
Toepassingen die wachtwoorden verwerken die gebruikers rechtstreeks invoeren, in plaats van gebruikers om te leiden naar de gehoste aanmeldingswebsite van Entra en entra het gebruikerswachtwoord op een veilige manier laten afhandelen. | U moet deze stroom alleen gebruiken wanneer andere veiligere stromen, zoals autorisatiecodestroom, niet haalbaar zijn, omdat deze niet zo veilig is. | Referentiestroom voor wachtwoord van resource-eigenaar voor meer informatie |
Desktop- of mobiele toepassingen die worden uitgevoerd op Windows of op een computer die is verbonden met een Windows-domein (AD of Azure AD) met behulp van geïntegreerde Windows-verificatiestroom in plaats van webaccountbeheer | Een bureaublad- of mobiele toepassing die automatisch moet worden aangemeld nadat de gebruiker zich heeft aangemeld bij het Windows-pc-systeem met een Entra-referentie | Windows Integrated Auth Flow voor meer informatie |
Wat zijn de beperkingen van omleidings-URI's voor Microsoft Entra-toepassingen?
Het Microsoft Entra-toepassingsmodel bevat de volgende beperkingen voor omleidings-URI's:
Omleidings-URI's moeten beginnen met het schema
https
, met uitzonderingen voor sommige localhost-omleidings-URI's .Omleidings-URI's zijn hoofdlettergevoelig en moeten overeenkomen met het geval van het URL-pad van uw actieve toepassing.
Voorbeelden:
- Als uw toepassing deel uitmaakt van het pad
.../abc/response-oidc
, moet u niet opgeven.../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
.
- Als uw toepassing deel uitmaakt van het pad
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 -
! $ ' ( ) , ;
Omleidings-URI's bieden geen ondersteuning voor geinternationaliseerde domeinnamen
Maximum aantal omleidings-URI's en URI-lengte
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. In de volgende 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 |
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 omleidings-URI's toe aan het toepassingsobject.
- Voeg nooit omleidings-URI-waarden toe aan een service-principal, omdat deze waarden kunnen worden verwijderd wanneer het object van de service-principal wordt gesynchroniseerd met het toepassingsobject. Dit kan gebeuren vanwege 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 (zoals Skype en 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 onderbroken vanwege 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.