【问题标题】:How to get tokens different resources msal2如何获取令牌不同的资源 msal2
【发布时间】:2021-03-07 05:17:18
【问题描述】:

使用 msal v2,我看不到如何获取不同资源的令牌。 这是一个简单的 SPA,它调用 2 个不同的 APIS(b2c 上的 2 个不同的资源)。 这是如何支持的? 为什么我需要为每个不同的服务登录? 使用登录方法,您必须指定范围,并且我不能从不同的资源设置多个范围。 遵循此示例但有 2 个资源,将无法正常工作。 https://github.com/Azure-Samples/ms-identity-javascript-react-spa-dotnetcore-webapi-obo

如果我们遵循这种架构,我们是否会遇到一个漏斗问题,即所有调用都将被重定向到一个点?

【问题讨论】:

    标签: azure-ad-b2c msal


    【解决方案1】:

    理解是正确的。目前 AAD B2C /authorize 端点仅允许同意单个资源。并且刷新令牌只能被交易以获得在 /authorize 调用中同意的范围的访问令牌。

    可以理解,正如您所说,这实际上意味着您的后端 API 被建模为一个单一资源。您可以同意一个资源上的 30 个范围。

    正在努力改变这种行为,以便刷新令牌可以用于多种不同的资源。

    如果您使用的是 SPA 应用程序,新令牌的获取依赖于会话 cookie,并且这种方法没有上述限制。只有依赖刷新令牌的 PKCE SPA 应用程序才会出现此问题。 .Net 应用也有这个限制。

    【讨论】:

    • 谢谢@jas-suri-msft,我实际上在隐式流程和 MSAL v1 中就遇到了这种情况,但是阅读了 MIcrosoft 文档,他们鼓励更新到 PKCE 并使用新版本图书馆。
    • 是的,我们更喜欢 PKCE,很快我们将对此进行改进,以便将令牌获取到已同意进入 Azure 门户的任何资源。
    • 我可以知道这个功能的估计值吗?我也想解决这个问题,制作一个单一的入口点 API,并通过这个调用其他 API,不幸的是,这个调用 DownstreamApis 调用也适用于 B2C。这种微服务架构的任何当前解决方案?
    • 唯一可行的是 API 网关,它代表单个资源,然后使用 AAD 客户端凭据获取新令牌以对后端进行进一步的 API 调用。多资源刷新令牌的 ETA 至少为 3 个月。
    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2016-01-12
    • 2022-01-07
    • 2014-08-27
    • 2015-04-26
    • 1970-01-01
    • 2019-09-09
    • 2019-12-23
    相关资源
    最近更新 更多