Azure AD Oauth2 隐式授予多个范围

2023-12-28

我有许多 AngularJS 应用程序,它们访问许多 NodeJS 托管的 API。我想用 Azure AD 隐式授权替换定制授权框架(长话短说我是如何到达那里的..)

目前正在进行 POC(基于微软的例子 https://github.com/Azure-Samples/active-directory-javascript-graphapi-v2/archive/quickstart.zip)并且在获取用于 API 数量的单个访问令牌时遇到了问题

UI 和 API 均已在 AZURE AD 应用程序中注册。还配置了许多权限,以便他们有权调用 API,例如https://graph.windows.net/User.Read api://xxx-xxx-xxxx-xx-xxxx/sales.admin

然后我在客户端定义

var requestObj = {
    scopes: ["https://graph.windows.net/User.Read", "api://xxx-xxx-xxxx-xx-xxxx/sales.admin" ]
};

所以我天真地以为我能够获得一个可以针对多个 API 使用的访问令牌

然而,看起来情况并非如此。客户端应用程序必须为应用程序需要访问的每个 API 创建单独的访问令牌。

这是正确的吗 ?这增加了客户端的复杂性,因为它需要维护和刷新这些令牌。

我是否遗漏了“架构”方面的某些内容,例如API 管理层 ?

Thanks

Nick


这是对的。 访问令牌仅适用于单个 API。

原因是每个令牌指定其有效的“受众”(存储在 aud 声明中)。 这标识了令牌的预期目标 (API)。

此外,MS Graph API 使用与其他 API 完全不同的签名算法,因此无论如何都无法使用相同的令牌。

API 可以在其清单中设置各种设置,以各种方式影响令牌。 这也使得拥有一种适用于所有 API 的令牌变得非常不可能。

如果您愿意,您可以通过创建“API 网关”来为您的客户端简化它,该网关使用正确的令牌代理对正确 API 的调用。 该网关将代替客户端处理令牌的复杂性,客户端只需要向网关进行身份验证。 查看代表授权流程,了解网关如何以登录用户身份调用 API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure AD Oauth2 隐式授予多个范围 的相关文章

随机推荐