Ric*_*ett 13 azure angularjs azure-active-directory adal
我们正在Azure中开发一个具有AngularJS前端和Web API后端的多租户SaaS产品.我们使用Azure AD进行身份验证,并使用ADAL JS(使用OAuth2隐式授权)将其连接起来.作为多租户应用程序,我们允许客户针对自己的Azure AD进行身份验证(可能与也可能未连接到内部部署AD).
到目前为止,这一切都很好.ADAL JS将用户带到Azure登录页面,一旦用户通过身份验证,就会发出OAuth2令牌.然后,此JWT令牌随所有API调用一起作为承载令牌发送,我们拥有自己的声明转换过程,用于将来自Azure的传入声明映射到我们的应用程序声明.
我们尝试按AD组进行操作,而不是在声明转换过程中指定单个用户.这允许我们的客户在他们的AD中安装安全组,然后我们的应用程序将使用它来映射到正确的应用程序声明.
我们收到的JWT令牌不包含groups财产,尽管有设置groupMembershipClaims于SecurityGroup在AAD应用程序清单.我从维托里奥的这条推文中读到了这一点
隐式授权不会发送这些声明,因为它返回查询字符串中的标记 - 它很容易超过最大长度
经过进一步调查,我还发现Vittorio的这个StackOverflow答案说
我验证了,在隐式授权案例中,您将始终通过超额索赔接收组.请参阅https://github.com/AzureADSamples/WebApp-GroupClaims-DotNet/tree/master/WebApp-GroupClaims-DotNet-它将向您展示如何处理超额索赔以检索组.
我查看了JWT令牌,它不包括任何超额索赔(由_claim_names和标识_claim_sources).我肯定是Azure AD中两个组的成员.
我现在似乎还有两个相互矛盾的陈述,即是否有可能在隐式授权令牌中获取组信息(无论是直接还是间接).
问题1:我是否应该获得可用于获取群组信息的超额索赔?如果是这样,我是否需要做任何事情以确保将索赔发送给我?
我是否可以通过图API中的用户链接获得超额索赔,或者我是否必须手动创建链接以获取用户的组,我仍然不确定如何使用图API进行身份验证.
我需要在收到带有承载令牌的请求(来自ADAL JS)后从后端联系图API.
问题2:我可以将相同的承载令牌发送到图形API以读取该用户的目录信息吗?或者我是否需要在应用程序的上下文中直接从我的应用程序到图形API租户而不是用户进行身份验证?
小智 4
对于这里的混乱表示歉意。我会仔细检查有关超额的声明,但无论如何 - 为了快速解锁您,我们假设您需要在没有超额声明帮助的情况下手动获取组。您无法重复使用发送到 Web API 的令牌。该令牌的范围仅限于您的应用程序,任何其他接收者都会(或应该)拒绝它。好消息是,后端可以请求图形范围内的新令牌的流程很容易实现。请参阅https://github.com/AzureADSamples/WebAPI-OnBehalfOf-DotNet - 您的情况的详细信息有点不同(您的 Web API 具有应用程序的受众 == clientid),但拓扑和代码/调用所涉及的内容完全相同。哈!五、
| 归档时间: |
|
| 查看次数: |
4006 次 |
| 最近记录: |