Webb inloggning med OpenID Connect i Azure Active Directory B2CWeb sign-in with OpenID Connect in Azure Active Directory B2C

OpenID Connect är ett autentiseringsprotokoll som byggts ovanpå OAuth 2,0 och som kan användas för att på ett säkert sätt logga användare i webb program.OpenID Connect is an authentication protocol, built on top of OAuth 2.0, that can be used to securely sign users in to web applications. Genom att använda Azure Active Directory B2C (Azure AD B2C) implementeringen av OpenID Connect kan du registrera dig för registrering, inloggning och andra identitets hanterings upplevelser i dina webb program för att Azure Active Directory (Azure AD).By using the Azure Active Directory B2C (Azure AD B2C) implementation of OpenID Connect, you can outsource sign-up, sign-in, and other identity management experiences in your web applications to Azure Active Directory (Azure AD). Den här guiden visar hur du gör detta på ett språk oberoende sätt.This guide shows you how to do so in a language-independent manner. Den beskriver hur du skickar och tar emot HTTP-meddelanden utan att använda våra bibliotek med öppen källkod.It describes how to send and receive HTTP messages without using any of our open-source libraries.

OpenID Connect utökar protokollet OAuth 2,0- auktorisering för användning som autentiseringsprotokoll .OpenID Connect extends the OAuth 2.0 authorization protocol for use as an authentication protocol. Med det här autentiseringsprotokollet kan du utföra enkel inloggning.This authentication protocol allows you to perform single sign-on. Den introducerar begreppet ID-token, vilket gör att klienten kan verifiera användarens identitet och få grundläggande profil information om användaren.It introduces the concept of an ID token, which allows the client to verify the identity of the user and obtain basic profile information about the user.

Eftersom den utökar OAuth 2,0, gör det också möjligt för program att säkert Hämta åtkomsttoken.Because it extends OAuth 2.0, it also enables applications to securely acquire access tokens. Du kan använda åtkomsttoken för att få åtkomst till resurser som skyddas av en Authorization Server.You can use access tokens to access resources that are secured by an authorization server. OpenID Connect rekommenderas om du skapar ett webb program som finns på en server och har åtkomst till via en webbläsare.OpenID Connect is recommended if you're building a web application that's hosted on a server and accessed through a browser. Om du vill lägga till identitets hantering i dina mobila eller Station ära program med hjälp av Azure AD B2C bör du använda OAuth 2,0 i stället för OpenID Connect.If you want to add identity management to your mobile or desktop applications using Azure AD B2C, you should use OAuth 2.0 rather than OpenID Connect. Mer information om tokens finns i Översikt över tokens i Azure Active Directory B2CFor more information about tokens, see the Overview of tokens in Azure Active Directory B2C

Azure AD B2C utökar standard OpenID Connect-protokollet för att göra mer än enkel autentisering och auktorisering.Azure AD B2C extends the standard OpenID Connect protocol to do more than simple authentication and authorization. Den introducerar användar flödes parametern, som gör att du kan använda OpenID Connect för att lägga till användar upplevelser till ditt program, till exempel registrering, inloggning och profil hantering.It introduces the user flow parameter, which enables you to use OpenID Connect to add user experiences to your application, such as sign-up, sign-in, and profile management.

Skicka autentiseringsbegärandenSend authentication requests

När ditt webb program behöver autentisera användaren och köra ett användar flöde, kan användaren dirigera användaren till slut punkten för /authorize.When your web application needs to authenticate the user and run a user flow, it can direct the user to the /authorize endpoint. Användaren vidtar åtgärder beroende på användar flödet.The user takes action depending on the user flow.

I den här förfrågan anger klienten de behörigheter som krävs för att hämta från användaren i parametern scope, och anger vilket användar flöde som ska köras.In this request, the client indicates the permissions that it needs to acquire from the user in the scope parameter, and specifies the user flow to run. För att få en känsla för hur begäran fungerar kan du försöka att klistra in begäran i en webbläsare och köra den.To get a feel for how the request works, try pasting the request into a browser and running it. Ersätt {tenant} med namnet på din klient.Replace {tenant} with the name of your tenant. Ersätt 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 med app-ID: t för det program som du tidigare har registrerat i din klient.Replace 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 with the app ID of the application you've previously registered in your tenant. Ändra också princip namnet ({policy}) till princip namnet som du har i din klient organisation, till exempel b2c_1_sign_in.Also change the policy name ({policy}) to the policy name that you have in your tenant, for example b2c_1_sign_in.

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6
&response_type=code+id_token
&redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
&response_mode=form_post
&scope=openid%20offline_access
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
ParameterParameter KrävsRequired BeskrivningDescription
innehav{tenant} JaYes Namnet på din Azure AD B2C-klientName of your Azure AD B2C tenant
politik{policy} JaYes Det användar flöde som ska köras.The user flow to be run. Ange namnet på ett användar flöde som du har skapat i Azure AD B2C klient organisationen.Specify the name of a user flow you've created in your Azure AD B2C tenant. Till exempel: b2c_1_sign_in, b2c_1_sign_upeller b2c_1_edit_profile.For example: b2c_1_sign_in, b2c_1_sign_up, or b2c_1_edit_profile.
client_idclient_id JaYes Det program-ID som Azure Portal tilldelats till ditt program.The application ID that the Azure portal assigned to your application.
Nnärnonce JaYes Ett värde som ingår i begäran (genereras av programmet) som ingår i det resulterande ID-token som ett anspråk.A value included in the request (generated by the application) that is included in the resulting ID token as a claim. Programmet kan sedan kontrol lera det här värdet för att minimera omuppspelning av token.The application can then verify this value to mitigate token replay attacks. Värdet är vanligt vis en slumpmässig, unik sträng som kan användas för att identifiera ursprunget för begäran.The value is typically a randomized unique string that can be used to identify the origin of the request.
response_typeresponse_type JaYes Måste innehålla en ID-token för OpenID Connect.Must include an ID token for OpenID Connect. Om ditt webb program också behöver tokens för att anropa ett webb-API kan du använda code+id_token.If your web application also needs tokens for calling a web API, you can use code+id_token.
omfångscope JaYes En blankstegsavgränsad lista över omfång.A space-separated list of scopes. openids omfånget anger en behörighet för att logga in användaren och hämta data om användaren i form av ID-token.The openid scope indicates a permission to sign in the user and get data about the user in the form of ID tokens. offline_access omfång är valfritt för webb program.The offline_access scope is optional for web applications. Det anger att programmet behöver en uppdateringstoken för utökad åtkomst till resurser.It indicates that your application will need a refresh token for extended access to resources.
visasprompt NejNo Typ av användar interaktion som krävs.The type of user interaction that's required. Det enda giltiga värdet för tillfället är login, vilket tvingar användaren att ange sina autentiseringsuppgifter för begäran.The only valid value at this time is login, which forces the user to enter their credentials on that request.
redirect_uriredirect_uri NejNo Parametern redirect_uri för ditt program, där autentiseringsbegäranden kan skickas och tas emot av ditt program.The redirect_uri parameter of your application, where authentication responses can be sent and received by your application. Den måste exakt matcha en av de redirect_uri parametrar som du registrerade i Azure Portal, förutom att den måste vara URL-kodad.It must exactly match one of the redirect_uri parameters that you registered in the Azure portal, except that it must be URL encoded.
response_moderesponse_mode NejNo Den metod som används för att skicka den resulterande auktoriseringskod tillbaka till ditt program.The method that is used to send the resulting authorization code back to your application. Det kan vara antingen query, form_posteller fragment.It can be either query, form_post, or fragment. form_post svars läget rekommenderas för bästa säkerhet.The form_post response mode is recommended for best security.
statestate NejNo Ett värde som ingår i begäran som också returneras i svaret från token.A value included in the request that's also returned in the token response. Det kan vara en sträng med valfritt innehåll som du vill ha.It can be a string of any content that you want. Ett slumpmässigt genererat unikt värde används vanligt vis för att förhindra förfalsknings attacker på begäran från en annan plats.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. Statusen används också för att koda information om användarens tillstånd i programmet innan autentiseringsbegäran inträffade, t. ex. sidan de var på.The state is also used to encode information about the user's state in the application before the authentication request occurred, such as the page they were on.

Nu uppmanas användaren att slutföra arbets flödet.At this point, the user is asked to complete the workflow. Användaren kan behöva ange sitt användar namn och lösen ord, logga in med en social identitet eller registrera dig för katalogen.The user might have to enter their username and password, sign in with a social identity, or sign up for the directory. Det kan finnas andra antal steg beroende på hur användar flödet har definierats.There could be any other number of steps depending on how the user flow is defined.

När användaren har slutfört användar flödet returneras ett svar till programmet vid den angivna redirect_uri-parametern med hjälp av metoden som anges i parametern response_mode.After the user completes the user flow, a response is returned to your application at the indicated redirect_uri parameter, by using the method that's specified in the response_mode parameter. Svaret är detsamma för var och en av föregående fall, oberoende av användar flödet.The response is the same for each of the preceding cases, independent of the user flow.

Ett lyckat svar med response_mode=fragment skulle se ut så här:A successful response using response_mode=fragment would look like:

GET https://aadb2cplayground.azurewebsites.net/#
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=arbitrary_data_you_can_receive_in_the_response
ParameterParameter BeskrivningDescription
id_tokenid_token ID-token som programmet begärde.The ID token that the application requested. Du kan använda ID-token för att verifiera användarens identitet och påbörja en session med användaren.You can use the ID token to verify the user's identity and begin a session with the user.
Riktcode Den auktoriseringskod som programmet begärde, om du använde response_type=code+id_token.The authorization code that the application requested, if you used response_type=code+id_token. Programmet kan använda auktoriseringskod för att begära en åtkomsttoken för en mål resurs.The application can use the authorization code to request an access token for a target resource. Auktoriseringskod upphör normalt att gälla efter 10 minuter.Authorization codes typically expire after about 10 minutes.
statestate Om en state-parameter ingår i begäran ska samma värde visas i svaret.If a state parameter is included in the request, the same value should appear in the response. Programmet bör kontrol lera att värdena för state i begäran och svaret är identiska.The application should verify that the state values in the request and response are identical.

Fel svar kan också skickas till redirect_uri-parametern så att programmet kan hantera dem på rätt sätt:Error responses can also be sent to the redirect_uri parameter so that the application can handle them appropriately:

GET https://aadb2cplayground.azurewebsites.net/#
error=access_denied
&error_description=the+user+canceled+the+authentication
&state=arbitrary_data_you_can_receive_in_the_response
ParameterParameter BeskrivningDescription
felerror En kod som kan användas för att klassificera de typer av fel som inträffar.A code that can be used to classify the types of errors that occur.
error_descriptionerror_description Ett fel meddelande som kan hjälpa till att identifiera rotor saken till ett autentiseringsfel.A specific error message that can help identify the root cause of an authentication error.
statestate Om en state-parameter ingår i begäran ska samma värde visas i svaret.If a state parameter is included in the request, the same value should appear in the response. Programmet bör kontrol lera att värdena för state i begäran och svaret är identiska.The application should verify that the state values in the request and response are identical.

Validera ID-tokenValidate the ID token

Det räcker bara att ta emot ID-token för att autentisera användaren.Just receiving an ID token is not enough to authenticate the user. Verifiera signaturen för ID-token och verifiera anspråk i token enligt programmets krav.Validate the ID token's signature and verify the claims in the token per your application's requirements. Azure AD B2C använder JSON-Webbtoken (JWTs) och kryptering med offentliga nycklar för att signera tokens och kontrol lera att de är giltiga.Azure AD B2C uses JSON Web Tokens (JWTs) and public key cryptography to sign tokens and verify that they are valid. Det finns många bibliotek med öppen källkod som är tillgängliga för validering av JWTs, beroende på vilket språk du föredrar.There are many open-source libraries that are available for validating JWTs, depending on your language of preference. Vi rekommenderar att du utforskar dessa alternativ i stället för att implementera din egen verifierings logik.We recommend exploring those options rather than implementing your own validation logic.

Azure AD B2C har en slut punkt för OpenID Connect-metadata som gör det möjligt för ett program att hämta information om Azure AD B2C vid körning.Azure AD B2C has an OpenID Connect metadata endpoint, which allows an application to get information about Azure AD B2C at runtime. Den här informationen omfattar slut punkter, token innehåll och signerings nycklar för token.This information includes endpoints, token contents, and token signing keys. Det finns ett JSON-Metadatadokumentet för varje användar flöde i B2C-klienten.There is a JSON metadata document for each user flow in your B2C tenant. Till exempel finns Metadatadokumentet för det b2c_1_sign_in användar flödet i fabrikamb2c.onmicrosoft.com:For example, the metadata document for the b2c_1_sign_in user flow in fabrikamb2c.onmicrosoft.com is located at:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/v2.0/.well-known/openid-configuration

En av egenskaperna för detta konfigurations dokument är jwks_uri, vars värde för samma användar flöde skulle vara:One of the properties of this configuration document is jwks_uri, whose value for the same user flow would be:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/discovery/v2.0/keys

För att avgöra vilket användar flöde som användes för att signera en ID-token (och varifrån metadata ska hämtas) har du två alternativ.To determine which user flow was used in signing an ID token (and from where to get the metadata), you have two options. Först ingår användar flödets namn i acr-anspråk i ID-token.First, the user flow name is included in the acr claim in the ID token. Ditt andra alternativ är att koda användar flödet i värdet för parametern state när du utfärdar begäran och sedan avkoda det för att avgöra vilket användar flöde som användes.Your other option is to encode the user flow in the value of the state parameter when you issue the request, and then decode it to determine which user flow was used. Antingen är metoden giltig.Either method is valid.

När du har köpt Metadatadokumentet från slut punkten för OpenID Connect-metadata kan du använda offentliga RSA 256-nycklar för att verifiera signaturen för ID-token.After you've acquired the metadata document from the OpenID Connect metadata endpoint, you can use the RSA 256 public keys to validate the signature of the ID token. Det kan finnas flera nycklar i den här slut punkten, som identifieras av ett kid-anspråk.There might be multiple keys listed at this endpoint, each identified by a kid claim. Huvudet på ID-token innehåller också ett kid-anspråk, vilket anger vilka av dessa nycklar som användes för att signera ID-token.The header of the ID token also contains a kid claim, which indicates which of these keys was used to sign the ID token.

Om du vill verifiera token från Azure AD B2C måste du generera den offentliga nyckeln med exponenten (e) och modulus (n).To verify the tokens from Azure AD B2C, you need to generate the public key using the exponent(e) and modulus(n). Du måste bestämma hur du vill göra detta i respektive programmeringsspråk i enlighet med detta.You need to determine how to do this in your respective programming language accordingly. Den officiella dokumentationen om generering av offentliga nycklar med RSA-protokollet hittar du här: https://tools.ietf.org/html/rfc3447#section-3.1The official documentation on Public Key generation with the RSA protocol can be found here: https://tools.ietf.org/html/rfc3447#section-3.1

När du har verifierat signaturen för ID-token finns det flera anspråk som du måste verifiera.After you've validated the signature of the ID token, there are several claims that you need to verify. Exempel:For instance:

  • Verifiera nonce-anspråk för att förhindra repetition av token-attacker.Validate the nonce claim to prevent token replay attacks. Värdet bör vara det du angav i inloggnings förfrågan.Its value should be what you specified in the sign-in request.
  • Verifiera aud-anspråk för att säkerställa att ID-token har utfärdats för ditt program.Validate the aud claim to ensure that the ID token was issued for your application. Värdet ska vara programmets program-ID.Its value should be the application ID of your application.
  • Verifiera iat-och exp-anspråk för att se till att ID-token inte har gått ut.Validate the iat and exp claims to make sure that the ID token hasn't expired.

Det finns också flera fler verifieringar som du bör utföra.There are also several more validations that you should perform. Valideringarna beskrivs i detalj i specifikationen OpenID Connect Core. Du kanske också vill verifiera ytterligare anspråk, beroende på ditt scenario.The validations are described in detail in the OpenID Connect Core Spec. You might also want to validate additional claims, depending on your scenario. Några vanliga valideringar är:Some common validations include:

  • Se till att användaren/organisationen har registrerat sig för programmet.Ensuring that the user/organization has signed up for the application.
  • Se till att användaren har rätt behörighet/privilegier.Ensuring that the user has proper authorization/privileges.
  • Se till att en viss styrka autentisering har inträffat, till exempel Azure Multi-Factor Authentication.Ensuring that a certain strength of authentication has occurred, such as Azure Multi-Factor Authentication.

När du har validerat ID-token kan du starta en session med användaren.After you validate the ID token, you can begin a session with the user. Du kan använda anspråken i ID-token för att hämta information om användaren i ditt program.You can use the claims in the ID token to obtain information about the user in your application. Användningen av den här informationen omfattar visning, poster och auktorisering.Uses for this information include display, records, and authorization.

Hämta en tokenGet a token

Om du behöver ditt webb program för att bara köra användar flöden kan du hoppa över efterföljande avsnitt.If you need your web application to only run user flows, you can skip the next few sections. Dessa avsnitt gäller endast för webb program som behöver göra autentiserade anrop till ett webb-API och som också skyddas av Azure AD B2C.These sections are applicable only to web applications that need to make authenticated calls to a web API and are also protected by Azure AD B2C.

Du kan lösa in den auktoriseringskod som du har köpt (genom att använda response_type=code+id_token) för en token till önskad resurs genom att skicka en POST begäran till /token slut punkten.You can redeem the authorization code that you acquired (by using response_type=code+id_token) for a token to the desired resource by sending a POST request to the /token endpoint. I Azure AD B2C kan du begära åtkomsttoken för andra API: er som vanligt genom att ange deras omfång i begäran.In Azure AD B2C, you can request access tokens for other APIs as usual by specifying their scope(s) in the request.

Du kan också begära en åtkomsttoken för appens egna Server dels webb-API genom att använda appens klient-ID som begärda omfång (vilket leder till en åtkomsttoken med klient-ID: t som mål grupp):You can also request an access token for your app's own back-end Web API by convention of using the app's client ID as the requested scope (which will result in an access token with that client ID as the "audience"):

POST {tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&scope=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...&redirect_uri=urn:ietf:wg:oauth:2.0:oob
ParameterParameter KrävsRequired BeskrivningDescription
innehav{tenant} JaYes Namnet på din Azure AD B2C-klientName of your Azure AD B2C tenant
politik{policy} JaYes Det användar flöde som användes för att hämta auktoriseringskod.The user flow that was used to acquire the authorization code. Du kan inte använda ett annat användar flöde i denna begäran.You can't use a different user flow in this request. Lägg till den här parametern i frågesträngen, inte POST texten.Add this parameter to the query string, not to the POST body.
client_idclient_id JaYes Det program-ID som Azure Portal tilldelats till ditt program.The application ID that the Azure portal assigned to your application.
client_secretclient_secret Ja, i Web AppsYes, in Web Apps Den program hemlighet som genererades i Azure Portal.The application secret that was generated in the Azure portal. Klient hemligheter används i det här flödet för scenarier med webb program, där klienten kan lagra en klient hemlighet på ett säkert sätt.Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. För interna app-scenarier (offentliga klienter) kan inte klient hemligheter lagras på ett säkert sätt, threfore som inte används i det här flödet.For Native App (public client) scenarios, client secrets cannot be securely stored, threfore not used on this flow. Om du använder en klient hemlighet måste du ändra den regelbundet.If using a client secret, please change it on a periodic basis.
Riktcode JaYes Den auktoriseringskod som du hämtade i början av användar flödet.The authorization code that you acquired in the beginning of the user flow.
grant_typegrant_type JaYes Typ av beviljande, som måste vara authorization_code för flödets auktoriseringskod.The type of grant, which must be authorization_code for the authorization code flow.
redirect_uriredirect_uri JaYes Parametern redirect_uri för det program där du fick auktoriseringskod.The redirect_uri parameter of the application where you received the authorization code.
omfångscope NejNo En blankstegsavgränsad lista över omfång.A space-separated list of scopes. openids omfånget anger en behörighet för att logga in användaren och hämta data om användaren i form av id_token-parametrar.The openid scope indicates a permission to sign in the user and get data about the user in the form of id_token parameters. Den kan användas för att hämta tokens till programmets egna Server dels webb-API, som representeras av samma program-ID som klienten.It can be used to get tokens to your application's own back-end web API, which is represented by the same application ID as the client. offline_access omfånget indikerar att programmet behöver en uppdateringstoken för utökad åtkomst till resurser.The offline_access scope indicates that your application needs a refresh token for extended access to resources.

Ett lyckat token-svar ser ut så här:A successful token response looks like:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
ParameterParameter BeskrivningDescription
not_beforenot_before Tiden då token anses vara giltig, i epok tid.The time at which the token is considered valid, in epoch time.
token_typetoken_type Värdet för token-typ.The token type value. Bearer är den enda typ som stöds.Bearer is the only type that is supported.
access_tokenaccess_token Den signerade JWT-token som du begärde.The signed JWT token that you requested.
omfångscope De omfattningar som token är giltig för.The scopes for which the token is valid.
expires_inexpires_in Hur lång tid som åtkomsttoken är giltig (i sekunder).The length of time that the access token is valid (in seconds).
refresh_tokenrefresh_token En OAuth 2,0-uppdateringstoken.An OAuth 2.0 refresh token. Programmet kan använda denna token för att hämta ytterligare token när aktuell token upphör att gälla.The application can use this token to acquire additional tokens after the current token expires. Du kan använda uppdaterings-token för att behålla åtkomst till resurser under långa tids perioder.Refresh tokens can be used to retain access to resources for extended periods of time. Omfånget offline_access måste ha använts i både begäran om auktorisering och token för att kunna ta emot en uppdateringstoken.The scope offline_access must have been used in both the authorization and token requests in order to receive a refresh token.

Fel svar ser ut så här:Error responses look like:

{
    "error": "access_denied",
    "error_description": "The user revoked access to the app.",
}
ParameterParameter BeskrivningDescription
felerror En kod som kan användas för att klassificera typer av fel som inträffar.A code that can be used to classify types of errors that occur.
error_descriptionerror_description Ett meddelande som kan hjälpa till att identifiera rotor saken till ett autentiseringsfel.A message that can help identify the root cause of an authentication error.

Använda tokenUse the token

Nu när du har skaffat en åtkomsttoken kan du använda token i begär anden till dina Server dels webb-API: er genom att inkludera den i Authorization-huvudet:Now that you've successfully acquired an access token, you can use the token in requests to your back-end web APIs by including it in the Authorization header:

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

Uppdatera tokenRefresh the token

ID-token går ut under en kort tids period.ID tokens expire in a short period of time. Uppdatera token när de har gått ut för att fortsätta att ha åtkomst till resurser.Refresh the tokens after they expire to continue being able to access resources. Du kan uppdatera en token genom att skicka en annan POST-begäran till /token-slutpunkten.You can refresh a token by submitting another POST request to the /token endpoint. Den här gången anger du parametern refresh_token i stället för parametern code:This time, provide the refresh_token parameter instead of the code parameter:

POST {tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&client_id=90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6&scope=openid offline_access&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...&redirect_uri=urn:ietf:wg:oauth:2.0:oob
ParameterParameter KrävsRequired BeskrivningDescription
innehav{tenant} JaYes Namnet på din Azure AD B2C-klientName of your Azure AD B2C tenant
politik{policy} JaYes Det användar flöde som användes för att hämta den ursprungliga uppdateringstoken.The user flow that was used to acquire the original refresh token. Du kan inte använda ett annat användar flöde i denna begäran.You can't use a different user flow in this request. Lägg till den här parametern i frågesträngen, inte POST texten.Add this parameter to the query string, not to the POST body.
client_idclient_id JaYes Det program-ID som Azure Portal tilldelats till ditt program.The application ID that the Azure portal assigned to your application.
client_secretclient_secret Ja, i Web AppsYes, in Web Apps Den program hemlighet som genererades i Azure Portal.The application secret that was generated in the Azure portal. Klient hemligheter används i det här flödet för scenarier med webb program, där klienten kan lagra en klient hemlighet på ett säkert sätt.Client secrets are used in this flow for Web App scenarios, where the client can securely store a client secret. För interna app-scenarier (offentliga klienter) kan inte klient hemligheter lagras på ett säkert sätt, threfore inte används för det här anropet.For Native App (public client) scenarios, client secrets cannot be securely stored, threfore not used on this call. Om du använder en klient hemlighet måste du ändra den regelbundet.If using a client secret, please change it on a periodic basis.
grant_typegrant_type JaYes Typ av beviljande, som måste vara en uppdateringstoken för den här delen av Authorization Code Flow.The type of grant, which must be a refresh token for this part of the authorization code flow.
refresh_tokenrefresh_token JaYes Den ursprungliga uppdateringstoken som hämtades i den andra delen av flödet.The original refresh token that was acquired in the second part of the flow. offline_accesss omfånget måste användas i både auktoriserings-och Tokenbegäran för att kunna ta emot en uppdateringstoken.The offline_access scope must be used in both the authorization and token requests in order to receive a refresh token.
redirect_uriredirect_uri NejNo Parametern redirect_uri för det program där du fick auktoriseringskod.The redirect_uri parameter of the application where you received the authorization code.
omfångscope NejNo En blankstegsavgränsad lista över omfång.A space-separated list of scopes. openids omfånget anger en behörighet för att logga in användaren och hämta data om användaren i form av ID-token.The openid scope indicates a permission to sign in the user and get data about the user in the form of ID tokens. Den kan användas för att skicka tokens till programmets egna Server dels webb-API, som representeras av samma program-ID som klienten.It can be used to send tokens to your application's own back-end web API, which is represented by the same application ID as the client. offline_access omfånget indikerar att programmet behöver en uppdateringstoken för utökad åtkomst till resurser.The offline_access scope indicates that your application needs a refresh token for extended access to resources.

Ett lyckat token-svar ser ut så här:A successful token response looks like:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
ParameterParameter BeskrivningDescription
not_beforenot_before Tiden då token anses vara giltig, i epok tid.The time at which the token is considered valid, in epoch time.
token_typetoken_type Värdet för token-typ.The token type value. Bearer är den enda typ som stöds.Bearer is the only type that is supported.
access_tokenaccess_token Den signerade JWT-token som begärdes.The signed JWT token that was requested.
omfångscope Omfattningen som token är giltig för.The scope for which the token is valid.
expires_inexpires_in Hur lång tid som åtkomsttoken är giltig (i sekunder).The length of time that the access token is valid (in seconds).
refresh_tokenrefresh_token En OAuth 2,0-uppdateringstoken.An OAuth 2.0 refresh token. Programmet kan använda denna token för att hämta ytterligare token när aktuell token upphör att gälla.The application can use this token to acquire additional tokens after the current token expires. Du kan använda uppdaterings-token för att behålla åtkomst till resurser under långa tids perioder.Refresh tokens can be used to retain access to resources for extended periods of time.

Fel svar ser ut så här:Error responses look like:

{
    "error": "access_denied",
    "error_description": "The user revoked access to the app.",
}
ParameterParameter BeskrivningDescription
felerror En kod som kan användas för att klassificera typer av fel som inträffar.A code that can be used to classify types of errors that occur.
error_descriptionerror_description Ett meddelande som kan hjälpa till att identifiera rotor saken till ett autentiseringsfel.A message that can help identify the root cause of an authentication error.

Skicka en inloggningsbegäranSend a sign-out request

När du vill signera användaren från programmet räcker det inte att ta bort programmets cookies eller på annat sätt avsluta sessionen med användaren.When you want to sign the user out of the application, it isn't enough to clear the application's cookies or otherwise end the session with the user. Omdirigera användaren till Azure AD B2C för att logga ut. Om du inte gör det kan det hända att användaren kan autentisera till programmet igen utan att ange sina autentiseringsuppgifter igen.Redirect the user to Azure AD B2C to sign out. If you fail to do so, the user might be able to reauthenticate to your application without entering their credentials again.

Om du vill logga ut användaren omdirigerar du användaren till end_session slut punkt som anges i dokumentet OpenID Connect-metadata som beskrivs ovan:To sign out the user, redirect the user to the end_session endpoint that is listed in the OpenID Connect metadata document described earlier:

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
ParameterParameter KrävsRequired BeskrivningDescription
innehav{tenant} JaYes Namnet på din Azure AD B2C-klientName of your Azure AD B2C tenant
politik{policy} JaYes Det användar flöde som du vill använda för att signera användaren från ditt program.The user flow that you want to use to sign the user out of your application.
id_token_hintid_token_hint NejNo En tidigare utfärdad ID-token för att skicka till utloggnings slut punkten som ett tips om slutanvändarens aktuella autentiserade session med klienten.A previously issued ID token to pass to the logout endpoint as a hint about the end user's current authenticated session with the client. id_token_hint garanterar att post_logout_redirect_uri är en registrerad svars-URL i dina Azure AD B2C program inställningar.The id_token_hint ensures that the post_logout_redirect_uri is a registered reply URL in your Azure AD B2C application settings.
post_logout_redirect_uripost_logout_redirect_uri NejNo URL: en som användaren ska omdirigeras till efter en lyckad utloggning. Om den inte är inkluderad visar Azure AD B2C användaren ett allmänt meddelande.The URL that the user should be redirected to after successful sign out. If it isn't included, Azure AD B2C shows the user a generic message. Om du inte anger en id_token_hintbör du inte registrera denna URL som en svars-URL i Azure AD B2C program inställningar.Unless you provide an id_token_hint, you should not register this URL as a reply URL in your Azure AD B2C application settings.
statestate NejNo Om en state-parameter ingår i begäran ska samma värde visas i svaret.If a state parameter is included in the request, the same value should appear in the response. Programmet bör kontrol lera att värdena för state i begäran och svaret är identiska.The application should verify that the state values in the request and response are identical.

Skydda din utloggnings omdirigeringSecure your logout redirect

Efter utloggning omdirigeras användaren till den URI som anges i post_logout_redirect_uri-parametern, oavsett vilka svars-URL: er som har angetts för programmet.After logout, the user is redirected to the URI specified in the post_logout_redirect_uri parameter, regardless of the reply URLs that have been specified for the application. Men om en giltig id_token_hint skickas, verifierar Azure AD B2C att värdet för post_logout_redirect_uri matchar ett av programmets konfigurerade omdirigerings-URI: er innan omdirigeringen utförs.However, if a valid id_token_hint is passed, Azure AD B2C verifies that the value of post_logout_redirect_uri matches one of the application's configured redirect URIs before performing the redirect. Om ingen matchande svars-URL har kon figurer ATS för programmet visas ett fel meddelande och användaren omdirigeras inte.If no matching reply URL was configured for the application, an error message is displayed and the user is not redirected.

Extern identitets leverantörs utloggningExternal identity provider sign-out

Om användaren dirigeras till end_session slut punkten raderas en del av användarens läge för enkel inloggning med Azure AD B2C, men användaren signerar inte användaren från sin IDP-session (social Identity Provider).Directing the user to the end_session endpoint clears some of the user's single sign-on state with Azure AD B2C, but it doesn't sign the user out of their social identity provider (IDP) session. Om användaren väljer samma IDP under en efterföljande inloggning, autentiseras de om utan att de anger sina autentiseringsuppgifter.If the user selects the same IDP during a subsequent sign-in, they are reauthenticated without entering their credentials. Om en användare vill logga ut från programmet betyder det inte nödvändigt vis att de vill logga ut från sitt Facebook-konto.If a user wants to sign out of the application, it doesn't necessarily mean they want to sign out of their Facebook account. Men om lokala konton används avslutas användarens session korrekt.However, if local accounts are used, the user's session ends properly.