【发布时间】:2020-02-12 20:45:17
【问题描述】:
在documentation 中,它为调用 Web API 的 Web 应用程序提供了完整的流程:
- Web 应用程序执行策略,用户完成用户体验。
- Azure AD B2C 向浏览器返回一个 (OpenID Connect) id_token 和一个授权代码。
- 浏览器将 id_token 和授权代码发布到重定向 URI。
- Web 服务器验证 id_token 并设置会话 cookie。
- Web 服务器通过向 Azure AD B2C 提供授权代码、应用程序客户端 ID 和 客户端凭据。
- access_token 和 refresh_token 返回到 Web 服务器。
- 使用授权标头中的 access_token 调用 Web API。
- Web API 验证令牌。
- 安全数据返回到 Web 应用程序。
查看 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。
通过使用我的浏览器和 Postman 并按照 document 中的步骤使用相同的 B2C 租户和应用程序,我确实按预期获得了刷新令牌。
这个question 与我的相似,其中一个答案中提到的blog post 提供了解决没有刷新令牌但我的问题仍然存在的症状:
如何让AcquireTokenByAuthorizationCode 返回一个 refresh_token?
【问题讨论】:
标签: c# azure azure-ad-b2c microsoft-identity-platform