静默访问令牌如何用于 azure b2c

问题描述 投票:0回答:2

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

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

这是我的场景。

  1. 用户将前往UI门户使用他们的社交帐户登录。
  2. 用户可以根据权限调用API来访问后端资源。

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

// 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 次身份验证?

azure azure-active-directory azure-ad-b2c
2个回答
4
投票

Web 应用程序处理身份验证响应后,

ConfidentialClientApplication.AcquireTokenByAuthorizationCodeAsync
方法从 Azure AD B2C 检索访问令牌,然后将其写入令牌缓存,这是由
MSALSessionCache
类实现的。

在 Web 应用程序调用 Web API 之前,

ConfidentialClientApplication.AcquireTokenSilentAsync
方法会从令牌缓存中读取现有的访问令牌,并且仅在以下情况下从 Azure AD B2C 请求新的访问令牌:

  1. 令牌缓存中不存在访问令牌;
  2. 即将过期;或
  3. 已经过期了。

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

如果从 Azure AD B2C 请求新的访问令牌,则需要为颁发的令牌付费。


0
投票

我想你不需要担心认证的数量。如果同一用户连接 100 次,仍然代表 1 MAU(每月活跃用户)。

© www.soinside.com 2019 - 2024. All rights reserved.