nic*_*ick 3 node.js oauth-2.0 azure-active-directory azure-ad-msal msal.js
我有许多 AngularJS 应用程序,它们访问许多 NodeJS 托管的 API。我想用 Azure AD 隐式授权替换定制授权框架(长话短说我是如何到达那里的..)
目前正在经历 POC(基于Microsoft 示例),并且在获取用于 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" ]
};
Run Code Online (Sandbox Code Playgroud)
所以我天真地以为我能够获得一个可以针对多个 API 使用的访问令牌
然而,看起来情况并非如此。客户端应用程序必须为应用程序需要访问的每个 API 创建单独的访问令牌。
这是正确的吗 ?这增加了客户端的复杂性,因为它需要维护和刷新这些令牌。
我是否遗漏了“架构”上的某些内容,例如 API 管理层?
谢谢
缺口
这是对的。访问令牌仅适用于单个 API。
原因是每个令牌指定其有效的“受众”(存储在 aud 声明中)。这标识了令牌的预期目标 (API)。
此外,MS Graph API 使用与其他 API 完全不同的签名算法,因此无论如何都无法使用相同的令牌。
API 可以在其清单中设置各种设置,以各种方式影响令牌。这也使得拥有一种适用于所有 API 的令牌变得非常不可能。
如果您愿意,您可以通过创建“API 网关”来为您的客户端简化它,该网关使用正确的令牌代理对正确 API 的调用。该网关将代替客户端处理令牌的复杂性,客户端只需要向网关进行身份验证。查看代表授权流程,了解网关如何以登录用户身份调用 API。