gpt4 book ai didi

c# - 为什么 AcquireTokenByAuthorizationCode 不返回 RefreshToken

转载 作者:行者123 更新时间:2023-12-03 01:35:38 25 4
gpt4 key购买 nike

在此documentation它提供了调用 Web API 的 Web 应用程序的完整流程:

  1. The web application executes a policy and the user completes the user experience.
  2. Azure AD B2C returns an (OpenID Connect) id_token and an authorization code to the browser.
  3. The browser posts the id_token and authorization code to the redirect URI.
  4. The web server validates the id_token and sets a session cookie.
  5. The web server asks Azure AD B2C for an access_token by providing it with the authorization code, application client ID, and client credentials.
  6. The access_token and refresh_token are returned to the web server.
  7. The web API is called with the access_token in an authorization header.
  8. The web API validates the token.
  9. Secure data is returned to the web application.

查看 6. 并使用 Azure-Samples 存储库中的代码 active-directory-b2c-dotnet-webapp-and-webapi ,我无法接通电话

AuthenticationResult result = await confidentialClient.AcquireTokenByAuthorizationCode(Globals.Scopes, notification.Code).ExecuteAsync();

返回一个refresh_token。它返回 IdToken 和 AccessToken,但不返回 RefreshToken。 screenshot of breakpoint result

通过使用我的浏览器和 Postman 并按照此 document 中的步骤操作使用相同的 B2C 租户和应用程序,我确实按预期获得了刷新 token 。

这个question与我的相似,blog post其中一个答案中提到的解决方案提供了解决没有刷新 token 的症状的方法,但我的问题仍然存在:

如何让AcquireTokenByAuthorizationCode返回refresh_token?

最佳答案

要获取刷新 token ,您的应用程序应附加 offline_access 作为范围。

你提到像 this msdn 能够返回您刷新 token 。这是因为请求已经包含offline_access范围

&scope=openid%20offline_access

active-directory-b2c-dotnet-webapp-and-webapi 获取刷新 token 。您需要更新Global.cs提交的范围包括offline_access

public static string[] Scopes = new string[] { ReadTasksScope, WriteTasksScope, "offline_access" };

关于c# - 为什么 AcquireTokenByAuthorizationCode 不返回 RefreshToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58407041/

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