微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure AD B2C 和 .Net Core 用于登录和静默更新 API 访问的访问令牌

如何解决Azure AD B2C 和 .Net Core 用于登录和静默更新 API 访问的访问令牌

问题 我有几个现有的 Web 应用程序,其中一些是静态服务的 React SPA 应用程序。我想提供一个登录服务,允许每个应用登录获取访问 JWT 令牌,它可以用来与 .net 核心 API 通信以检索特定于登录用户的 JSON 数据。

我不想使用隐式流(根据 OAuth 2 安全性 best practices)。我也不想为每个应用程序维护登录解决方案的代码

可能的解决方案: 我编写了一个 .Net Core 应用程序,网络应用程序可以重定向到该应用程序进行登录。我已经设置了 Azure AD B2C(当前使用用户登录 UI)。

我还需要提供一个 (POST) 端点,可以将过期的访问令牌交换为新的有效访问令牌(使用用户在 90 天内处于活动状态时不会过期的刷新令牌)。

>

尝试 1 - Microsoft Identity Web: 我尝试使用 Microsoft Identity Web 库,但我看不到任何方法来提供端点,网络应用程序可以在该端点上从旧的请求新的访问令牌。

尝试 2 - MSAL: 我曾尝试使用 MSAL,但缺少将其与 .Net Core 一起使用的文档,而且我不太清楚如何使用 AcquiretokenSilent,因为它需要令牌缓存中的可用帐户才能使用应用程序,我不能只将旧的访问令牌传递给它。更糟糕的是,在 .Net framework 4.5 中使用 MSAL 的旧教程需要隐式流程,而没有任何解释为什么不使用授权代码

尝试 3 - POST 到 b2clogin.com 授权和令牌端点: 这是我得到的唯一解决方案,这可能是我的方案的正确答案。

我遵循了以下文档:OAuth 2.0 authorization code flow in Azure Active Directory B2C

所以基本上是登录(不包括参数):

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?...

获取访问/刷新令牌并使用刷新令牌更新访问令牌:

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token

注意!如果您想知道 {policy} 应该是什么,它是 B2C 中登录用户流的名称

访问令牌在 API 中未过期 我现在剩下的唯一问题是,我在登录用户流程中设置的生命周期为 5 分钟的访问令牌在 API 中不会过期。即使 expires_in 正确显示 300 秒,我仍然可以在它过期后继续使用它。

但是,一旦我重新启动 API,过期的访问令牌就会停止工作。我将为此发布一个单独的问题,并在我了解正在发生的事情后更新/删除它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。