Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze artikel laat zien hoe je aanmeldingen en afmeldingen van gebruikers kunt aanpassen terwijl je gebruikmaakt van de ingebouwde authenticatie en autorisatie in Azure App Service.
Gebruik meerdere aanmeldproviders
De configuratie van Azure Portal biedt geen kant-en-klare manier om meerdere aanmeldingsproviders aan uw gebruikers te presenteren. U wilt bijvoorbeeld zowel Facebook als X als opties aanbieden. Meerdere aanmeldingsproviders toevoegen aan uw app:
In de Azure-portal, in uw web-app, selecteer Instellingen>Authenticatie.
Selecteer Bewerken voor verificatie-instellingen.
Voor Toegang beperken selecteert u Niet-geverifieerde toegang toestaan.
Voeg op de aanmeldingspagina, de navigatiebalk of een andere locatie in uw app een aanmeldingskoppeling toe aan elk van de providers die u hebt ingeschakeld (
/.auth/login/<provider>
). For example:<a href="/.auth/login/aad">Log in with Microsoft Entra</a> <a href="/.auth/login/facebook">Log in with Facebook</a> <a href="/.auth/login/google">Log in with Google</a> <a href="/.auth/login/x">Log in with X</a> <a href="/.auth/login/apple">Log in with Apple</a>
Wanneer de gebruiker een van de links selecteert, opent de betreffende pagina voor aanmelding.
Om de gebruiker na het aanmelden naar een aangepaste URL te leiden, gebruikt u de post_login_redirect_uri
query string parameter. Als u de gebruiker bijvoorbeeld wilt verplaatsen naar /Home/Index
na aanmelding, gebruikt u de volgende HTML-code:
<a href="/.auth/login/<provider>?post_login_redirect_uri=/Home/Index">Log in</a>
Opmerking
Verwar deze waarde niet met de omleidings-URI in de configuratie van uw id-provider.
Gebruik klantgerichte aanmelding
Bij een clientgestuurde aanmelding meldt de applicatie de gebruiker aan bij de identiteitsprovider met behulp van een providerspecifieke SDK. De toepassingscode verzendt vervolgens het resulterende verificatietoken naar App Service voor validatie met behulp van een HTTP-aanvraag POST
. Met deze validatie zelf hebben gebruikers geen toegang tot de gewenste app-resources. Een geslaagde validatie geeft gebruikers een sessietoken dat ze kunnen gebruiken voor toegang tot app-resources. Zie Verificatiestroom voor meer informatie.
Om de provider-token te valideren, moet de App Service-app eerst worden geconfigureerd met de gewenste provider. Tijdens runtime, nadat je het authenticatietoken van je provider hebt verkregen, stuur je het token naar /.auth/login/<provider>
voor validatie. For example:
POST https://<appname>.azurewebsites.net/.auth/login/aad HTTP/1.1
Content-Type: application/json
{"id_token":"<token>","access_token":"<token>"}
Het tokenformaat varieert enigszins afhankelijk van de aanbieder:
Waarde van de aanbieder | Required in request body | Opmerkingen |
---|---|---|
aad |
{"access_token":"<access_token>"} |
De eigenschappen id_token , refresh_token en expires_in zijn optioneel. |
google |
{"id_token":"<id_token>"} |
De authorization_code eigenschap is optioneel. Het opgeven van een authorization_code waarde voegt een access token en een refresh token toe aan de tokenstore. When you specify authorization_code , you can optionally accompany it with a redirect_uri property. |
facebook |
{"access_token":"<user_access_token>"} |
Gebruik een geldig user access token van Facebook. |
twitter |
{"access_token":"<access_token>", "access_token_secret":"<access_token_secret>"} |
Note
De GitHub-provider voor App Service-verificatie biedt geen ondersteuning voor aangepaste aanmelding en afmelding.
If the provider token is validated successfully, the API returns with an authenticationToken
value in the response body. This value is your session token. Zie Werken met gebruikersidentiteiten in Azure App Service-verificatie voor meer informatie over gebruikersclaims.
{
"authenticationToken": "...",
"user": {
"userId": "sid:..."
}
}
Nadat u dit sessie-token hebt, kunt u toegang krijgen tot beschermde app-bronnen door de X-ZUMO-AUTH
header toe te voegen aan uw HTTP-verzoeken. For example:
GET https://<appname>.azurewebsites.net/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>
Sign out of a session
Gebruikers kunnen een afmelding starten door een GET
verzoek te sturen naar het /.auth/logout
eindpunt van de app. Het GET
verzoek:
- Verwijdert authenticatiecookies uit de huidige sessie.
- Verwijdert de token(s) van de huidige gebruiker uit de tokenopslag.
- Voert een afmelding aan de serverzijde uit bij de id-provider voor Microsoft Entra en Google.
Hier is een eenvoudige afmeldingslink op een webpagina:
<a href="/.auth/logout">Sign out</a>
Standaard leidt een succesvolle afmelding de cliënt om naar de URL /.auth/logout/complete
. You can change the post-sign-out redirect page by adding the post_logout_redirect_uri
query parameter. For example:
GET /.auth/logout?post_logout_redirect_uri=/index.html
We recommend that you encode the value of post_logout_redirect_uri
.
Wanneer u volledig gekwalificeerde URL's gebruikt, moet de URL worden gehost in hetzelfde domein of worden geconfigureerd als een toegestane externe omleidings-URL voor uw app. The following example redirects to an https://myexternalurl.com
URL that's not hosted in the same domain:
GET /.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fmyexternalurl.com
Run the following command in Azure Cloud Shell:
az webapp auth update --name <app_name> --resource-group <group_name> --allowed-external-redirect-urls "https://myexternalurl.com"
Preserve URL fragments
After users sign in to your app, they usually want to be redirected to the same section of the same page, such as /wiki/Main_Page#SectionZ
. nl-NL: Echter, omdat URL-fragmenten (bijvoorbeeld, #SectionZ
) nooit naar de server worden verzonden, blijven ze standaard niet behouden nadat het OAuth-aanmeldproces is voltooid en terug naar uw app wordt omgeleid. Gebruikers krijgen dan een minder dan optimale ervaring wanneer ze opnieuw naar de gewenste anker moeten gaan. Deze beperking geldt voor alle server-side authenticatieoplossingen.
In App Service-verificatie kunt u URL-fragmenten behouden tijdens het OAuth-aanmeldproces door WEBSITE_AUTH_PRESERVE_URL_FRAGMENT
in te stellen op true
. U gebruikt deze app-instelling in de Azure-portal of u kunt de volgende opdracht uitvoeren in Cloud Shell:
az webapp config appsettings set --name <app_name> --resource-group <group_name> --settings WEBSITE_AUTH_PRESERVE_URL_FRAGMENT="true"
Stel de domeinaanwijzing in voor aanmeldaccounts
Zowel Microsoft-accounts als Microsoft Entra stellen gebruikers in staat om zich vanuit meerdere domeinen aan te melden. Een Microsoft-account staat bijvoorbeeld outlook.com
, live.com
en hotmail.com
accounts toe. Microsoft Entra staat een onbeperkt aantal aangepaste domeinen toe voor de aanmeldaccounts. Echter, u wilt uw gebruikers wellicht direct naar uw eigen, merkgebonden Microsoft Entra-aanmeldingspagina versnellen (zoals contoso.com
).
Om de domeinnaam van de aanmeldaccounts voor te stellen, volgt u deze stappen:
In Resource Explorer, at the top of the page, select Read/Write.
On the left pane, go to subscriptions>subscription-name>resourceGroups>resource-group-name>providers>Microsoft.Web>sites>app-name>config>authsettingsV2.
Kies Bewerken.
Add a
loginParameters
array with adomain_hint
item:"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["domain_hint=<domain-name>"], } } }
Select Put.
This setting appends the domain_hint
query string parameter to the sign-in redirect URL.
Important
It's possible for the client to remove the domain_hint
parameter after receiving the redirect URL, and then sign in with a different domain. So although this function is convenient, it's not a security feature.
Authorize or deny users
App Service zorgt voor de eenvoudigste autorisatiecase, bijvoorbeeld het weigeren van niet-geverifieerde aanvragen. Uw app vereist mogelijk meer fijnmazig autorisatiegedrag, zoals het beperken van de toegang tot alleen een specifieke groep gebruikers.
Mogelijk moet u aangepaste toepassingscode schrijven om toegang tot de aangemelde gebruiker toe te staan of te weigeren. In sommige gevallen kunnen App Service of uw id-provider helpen zonder dat er codewijzigingen nodig zijn.
Server level (Windows apps only)
For any Windows app, you can define authorization behavior of the IIS web server by editing the web.config
file. Linux-apps gebruiken geen IIS en kunnen niet worden geconfigureerd via web.config
.
Als u naar de Kudu-console voor foutopsporing voor uw app wilt gaan, selecteert uGeavanceerde hulpprogramma's voor ontwikkelingsprogramma's> en selecteert u Go. Selecteer vervolgens Debug-console.
U kunt deze pagina ook openen met deze URL:
https://<app-name>-<random-hash>.scm.<region>.azurewebsites.net/DebugConsole
. Als u de willekeurige hash- en regiowaarden wilt ophalen, kopieert u het standaarddomein in uw app-overzicht.In de browserverkenner van uw App Service-bestanden, ga naar
site/wwwroot
. Alsweb.config
niet bestaat, maak het dan aan door te selecteren +>Nieuw bestand.Select the pencil for
web.config
to edit the file. Add the following configuration code, and then select Save. Ifweb.config
already exists, just add the<authorization>
element with everything in it. Voeg in het<allow>
element de accounts toe die je wilt toestaan.<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <authorization> <allow users="user1@contoso.com,user2@contoso.com"/> <deny users="*"/> </authorization> </system.web> </configuration>
Identity provider level
The identity provider might provide certain turnkey authorization. For example:
- Voor Microsoft Entra kunt u rechtstreeks toegang op ondernemingsniveau beheren . Zie Gebruikerstoegang tot toepassingen verwijderen voor meer informatie.
- For Google, Google API projects that belong to an organization can be configured to allow access only to users in your organization. Zie OAuth-clients beheren voor meer informatie.
Applicatieniveau
If either of the other levels doesn't provide the authorization that you need, or if your platform or identity provider isn't supported, you must write custom code to authorize users based on the user claims.
Verwante inhoud
- Zelfstudie: Gebruikers van begin tot eind verifiëren en autoriseren in Azure App Service
- Omgevingsvariabelen en app-instellingen voor authenticatie