【发布时间】:2018-09-17 03:40:49
【问题描述】:
我有一个网站 (WebApp),我从该网站对接受 JWT Bearer Token 身份验证的 WebAPI 层进行 Ajax 调用。我已将 Adal.js 集成到我的前端脚本层中,配置值如下所示。
var config = {
instance: "https://login.microsoftonline.com/",
tenant: "tenant.com",
clientId: "CLIENT_ID OF THE PORTAL APP", // Web-Portal app
redirectUri: "http://localhost:8241/",
popUp: true,
cacheLocation: "localStorage" };
WebApiConfig 如下所示:
var webApiConfig = {
resourceId: "CLIENT_ID OF API APP", // Web-API app
resourceBaseAddress: "http://localhost:9020/"
};
一切正常,我能够通过隐式 oauth 流通过访问令牌进行身份验证/授权和调用我的 webapi。
现在我希望能够检索登录用户的用户安全组成员资格值,以便 在 WebAPI 层,我可以确保用户属于特定的安全组授权逻辑的一部分。因此,我在 Azure AD 的应用程序清单 xml 中设置了 GroupMembershipClaims: "SecurityGroup"(我首先为 WebApi 应用程序清单执行此操作,然后也在 WebApp 应用程序清单中执行此操作)。
但是,GroupMembershipClaims 似乎只包含在 idtoken 中,不 包含在 accessToken 中。鉴于它是发送到 WebAPI 的 accessToken,我无法在该层进行此检查。我想我可以在 WebApp 层进行检查,但鉴于此 WebApi 层将从许多其他前端应用程序(不属于我所有,我主要是“API 提供者”)调用,这不是一个安全的解决方案。
那么我该如何解决呢?我想一种方法是使用 WebApi 层上的“代表”流来调用 Graph API 来找出答案?恐怕这将需要比用户范围内更多的权限。
谢谢!
【问题讨论】:
标签: asp.net-web-api oauth-2.0 authorization azure-active-directory adal.js