gpt4 book ai didi

azure - 静默访问 token 如何用于 azure b2c

转载 作者:行者123 更新时间:2023-12-03 04:50:10 24 4
gpt4 key购买 nike

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

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

这是我的场景。

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

据我了解,当您使用社交帐户登录 UI 时,您会收到一个访问 token ,这是 B2C 中的一种身份验证。如果他们想从API访问后端资源,则需要您通过发出另一个请求来获取访问 token ,如图here 。下面是静默获取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 次身份验证?

最佳答案

Web 应用程序处理身份验证响应后,ConfidentialClientApplication.AcquireTokenByAuthorizationCodeAsync 方法 retrieves the access token from Azure AD B2C and then writes it to a token cache ,它由 MSALSessionCache 类实现。

在 Web 应用程序调用 Web API 之前,ConfidentialClientApplication.AcquireTokenSilentAsync 方法会从 token 缓存中读取现有访问 token ,并且仅在以下情况下从 Azure AD B2C 请求新的访问 token :

  1. token 缓存中不存在访问 token ;
  2. 即将到期;或
  3. 已过期。

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

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

关于azure - 静默访问 token 如何用于 azure b2c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50889147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com