繁体   English   中英

静默访问令牌如何用于Azure B2C

[英]How does silent access token work for azure b2c

我想了解Azure B2C的身份验证过程。 据我了解,每月最多有50k身份验证是免费的,如果超过50k,则需要支付更多费用。

我正在开发两个应用程序。 一个用于前端,另一个用于后端,它们将使用Azure B2C来对用户进行身份验证。

这是我的情况。

  1. 用户将进入UI门户以使用其社交帐户登录。
  2. 用户可以通过基于其权限的API调用来访问后端资源。

因此,据我了解,当您使用社交帐户登录UI时,您会收到访问令牌,这是B2C中的一种身份验证。 如果他们想从API访问后端的资源,它需要你以另一个请求如图所示,以获得访问令牌这里 以下是静默获取令牌的示例代码。

// Retrieve the token with the specified scopes

var scope = AzureAdB2COptions.ApiScopes.Split(' ');

string signedInUserID = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

TokenCache userTokenCache = new MSALSessionCache(signedInUserID, this.HttpContext).GetMsalCacheInstance();

ConfidentialClientApplication cca = new ConfidentialClientApplication(AzureAdB2COptions.ClientId, AzureAdB2COptions.Authority, AzureAdB2COptions.RedirectUri, new ClientCredential(AzureAdB2COptions.ClientSecret), userTokenCache, null);

AuthenticationResult result = await cca.AcquireTokenSilentAsync(scope, cca.Users.FirstOrDefault(), AzureAdB2COptions.Authority, false);

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, AzureAdB2COptions.ApiUrl);

// Add token to the Authorization header and make the request

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

HttpResponseMessage response = await client.SendAsync(request);

我的问题是,使用您的社交帐户登录UI并使用另一个无提示请求访问后端资源时。 它算作1个验证吗? 还是在Azure B2C中算作2身份验证?

Web应用程序处理身份验证响应之后, ConfidentialClientApplication.AcquireTokenByAuthorizationCodeAsync方法从Azure AD B2C检索访问令牌,然后将其写入令牌缓存 ,该令牌缓存MSALSessionCache类实现。

在Web应用程序调用Web API之前,如果满足以下条件,则ConfidentialClientApplication.AcquireTokenSilentAsync方法将从令牌缓存中读取现有访问令牌,并且仅从Azure AD B2C请求新的访问令牌:

  1. 访问令牌在令牌缓存中不存在;
  2. 它即将到期; 要么
  3. 它已过期。

如果从令牌缓存中读取了现有的访问令牌,则无需为已发行的令牌付费。

如果从Azure AD B2C请求新的访问令牌,则将向您收取已颁发令牌的费用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM