Begär en åtkomsttoken i Azure Active Directory B2CRequest an access token in Azure Active Directory B2C

En åtkomsttoken innehåller anspråk som du kan använda i Azure Active Directory B2C (Azure AD B2C) för att identifiera de beviljade behörigheterna för dina API: er.An access token contains claims that you can use in Azure Active Directory B2C (Azure AD B2C) to identify the granted permissions to your APIs. När du anropar en resurs Server måste en åtkomsttoken finnas i HTTP-begäran.When calling a resource server, an access token must be present in the HTTP request. En åtkomsttoken betecknas som access_token i svaren från Azure AD B2C.An access token is denoted as access_token in the responses from Azure AD B2C.

Den här artikeln visar hur du begär en åtkomsttoken för ett webb program och webb-API.This article shows you how to request an access token for a web application and web API. Mer information om tokens i Azure AD B2C finns i Översikt över tokens i Azure Active Directory B2C.For more information about tokens in Azure AD B2C, see the overview of tokens in Azure Active Directory B2C.

Anteckning

Webb-API:ets kedjor (On-Behalf-Of) stöds inte av Azure AD B2C.Web API chains (On-Behalf-Of) is not supported by Azure AD B2C. – Många arkitekturer innehåller ett webb-API som måste anropa ett annat underordnat webb-API, som båda skyddas av Azure AD B2C.- Many architectures include a web API that needs to call another downstream web API, both secured by Azure AD B2C. Det här scenariot är vanligt i klienter som har en server del för webb-API, som i sin tur anropar en annan tjänst.This scenario is common in clients that have a web API back end, which in turn calls a another service. Det här scenariot med länkade webb-API:er kan användas med hjälp av "OAuth 2.0 JWT Bearer Credential grant", även kallat On-Behalf-Of-flöde.This chained web API scenario can be supported by using the OAuth 2.0 JWT Bearer Credential grant, otherwise known as the On-Behalf-Of flow. Dock är On-Behalf-Of-flödet inte implementerat i Azure AD B2C.However, the On-Behalf-Of flow is not currently implemented in Azure AD B2C.

FörutsättningarPrerequisites

ScopeScopes

Med hjälp av omfång kan du hantera behörigheter för skyddade resurser.Scopes provide a way to manage permissions to protected resources. När en åtkomsttoken begärs måste klient programmet ange önskade behörigheter i scope -parametern för begäran.When an access token is requested, the client application needs to specify the desired permissions in the scope parameter of the request. Om du till exempel vill ange omfattning svärdet read för för API: t som har app-ID-URI: n https://contoso.onmicrosoft.com/api, blir https://contoso.onmicrosoft.com/api/readomfattningen.For example, to specify the Scope Value of read for the API that has the App ID URI of https://contoso.onmicrosoft.com/api, the scope would be https://contoso.onmicrosoft.com/api/read.

Omfång används av webb-API för att implementera omfångsbaserad åtkomststyrning.Scopes are used by the web API to implement scope-based access control. Till exempel kan användare av webb-API:et ha både läs- och skrivbehörighet, eller så har användare av webb-API:et kanske bara läsbehörighet.For example, users of the web API could have both read and write access, or users of the web API might have only read access. Om du vill förvärva flera behörigheter i samma förfrågan kan du lägga till flera poster i den enda omfattnings parametern för begäran, avgränsade med blank steg.To acquire multiple permissions in the same request, you can add multiple entries in the single scope parameter of the request, separated by spaces.

I följande exempel visas omfattningarna som avkodats i en URL:The following example shows scopes decoded in a URL:

scope=https://contoso.onmicrosoft.com/api/read openid offline_access

I följande exempel visas omfång som är kodade i en URL:The following example shows scopes encoded in a URL:

scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2Fread%20openid%20offline_access

Om du begär fler omfattningar än vad som beviljas för ditt klient program, lyckas anropet om minst en behörighet beviljas.If you request more scopes than what is granted for your client application, the call succeeds if at least one permission is granted. SCP -anspråket i den resulterande åtkomsttoken fylls med endast de behörigheter som har beviljats.The scp claim in the resulting access token is populated with only the permissions that were successfully granted. OpenID Connect standard anger flera särskilda omfångs värden.The OpenID Connect standard specifies several special scope values. Följande omfång representerar behörigheten att komma åt användarens profil:The following scopes represent the permission to access the user’s profile:

  • OpenID -begär en ID-token.openid - Requests an ID token.
  • offline_access – begär en uppdateringstoken med hjälp av auth Codeflows.offline_access - Requests a refresh token using Auth Code flows.

Om parametern response_type /authorize i en tokenbegäran inkluderar, måste omfattnings parametern innehålla minst en annan resurs omfattning än openid och offline_access som ska beviljas.If the response_type parameter in an /authorize request includes token, the scope parameter must include at least one resource scope other than openid and offline_access that will be granted. Annars Miss lyckas begäran. /authorizeOtherwise, the /authorize request fails.

Begär en tokenRequest a token

Om du vill begära en åtkomsttoken behöver du en auktoriseringskod.To request an access token, you need an authorization code. Nedan visas ett exempel på en begäran till /authorize slut punkten för en auktoriseringskod.Below is an example of a request to the /authorize endpoint for an authorization code. Anpassade domäner stöds inte för användning med åtkomsttoken.Custom domains are not supported for use with access tokens. Använd din tenant-name.onmicrosoft.com-domän i fråge-URL: en.Use your tenant-name.onmicrosoft.com domain in the request URL.

I följande exempel ersätter du följande värden:In the following example, you replace these values:

  • <tenant-name>– Namnet på din Azure AD B2C klient.<tenant-name> - The name of your Azure AD B2C tenant.
  • <policy-name>– Namnet på din anpassade princip eller ditt användar flöde.<policy-name> - The name of your custom policy or user flow.
  • <application-ID>– Program identifieraren för det webb program som du har registrerat för att stödja användar flödet.<application-ID> - The application identifier of the web application that you registered to support the user flow.
  • <redirect-uri>– Den omdirigerings-URI som du angav när du registrerade klient programmet.<redirect-uri> - The Redirect URI that you entered when you registered the client application.
GET https://<tenant-name>.b2clogin.com/tfp/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize?
client_id=<application-ID>
&nonce=anyRandomValue
&redirect_uri=https://jwt.ms
&scope=https://tenant-name>.onmicrosoft.com/api/read
&response_type=code

Svaret med auktoriseringskod bör likna följande exempel:The response with the authorization code should be similar to this example:

https://jwt.ms/?code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...

När du har tagit emot auktoriseringskod kan du använda den för att begära en åtkomsttoken:After successfully receiving the authorization code, you can use it to request an access token:

POST <tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name> HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<application-ID>
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...
&redirect_uri=https://jwt.ms
&client_secret=2hMG2-_:y12n10vwH...

Du bör se något som liknar följande svar:You should see something similar to the following response:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrN...",
    "token_type": "Bearer",
    "not_before": 1549647431,
    "expires_in": 3600,
    "expires_on": 1549651031,
    "resource": "f2a76e08-93f2-4350-833c-965c02483b11",
    "profile_info": "eyJ2ZXIiOiIxLjAiLCJ0aWQiOiJjNjRhNGY3ZC0zMDkxLTRjNzMtYTcyMi1hM2YwNjk0Z..."
}

När du https://jwt.ms använder för att kontrol lera den åtkomsttoken som returnerades, bör du se något som liknar följande exempel:When using https://jwt.ms to examine the access token that was returned, you should see something similar to the following example:

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dl..."
}.{
  "iss": "https://contoso0926tenant.b2clogin.com/c64a4f7d-3091-4c73-a7.../v2.0/",
  "exp": 1549651031,
  "nbf": 1549647431,
  "aud": "f2a76e08-93f2-4350-833c-965...",
  "oid": "1558f87f-452b-4757-bcd1-883...",
  "sub": "1558f87f-452b-4757-bcd1-883...",
  "name": "David",
  "tfp": "B2C_1_signupsignin1",
  "nonce": "anyRandomValue",
  "scp": "read",
  "azp": "38307aee-303c-4fff-8087-d8d2...",
  "ver": "1.0",
  "iat": 1549647431
}.[Signature]

Nästa stegNext steps