gpt4 book ai didi

angularjs - 在 ADAL JS 中使用 Azure AD 和 OAuth2 隐式授予对声明进行分组

转载 作者:行者123 更新时间:2023-12-02 05:05:09 25 4
gpt4 key购买 nike

背景

我们正在 Azure 中开发 Multi-Tenancy SaaS 产品,该产品具有 AngularJS 前端和 Web API 后端。我们使用 Azure AD 进行身份验证,并将其与 ADAL JS 连接起来(使用 OAuth2 隐式授权)。作为一个 Multi-Tenancy 应用程序,我们允许客户根据自己的 Azure AD(可能会也可能不会连接到本地 AD)进行身份验证。

到目前为止,一切都很顺利。 ADAL JS 将用户带到 Azure 登录页面,用户经过身份验证后,就会颁发 OAuth2 token 。然后,此 JWT token 作为不记名 token 与所有 API 调用一起发送,我们有自己的声明转换过程,用于将来自 Azure 的传入声明映射到我们的应用程序声明。

我们尝试通过 AD 组来完成此操作,而不是在声明转换过程中指定单个用户。这允许我们的客户在他们的 AD 中拥有安全组,然后我们的应用程序将使用它来映射到正确的应用程序声明。

问题

尽管我们在 AAD 应用程序 list 中将 groupMembershipClaims 设置为 SecurityGroup,但我们收到的 JWT token 不包含 groups 属性。我后来读到了this tweet from Vittorio那个

The implicit grant will NOT send those claims, as it returns the token in the querystring - it's easy to blow past max length

经过进一步调查,我还发现this StackOverflow answer from Vittorio这说的是

I verified and in the implicit grant case you will receive groups always via the overage claim. Please refer to https://github.com/AzureADSamples/WebApp-GroupClaims-DotNet/tree/master/WebApp-GroupClaims-DotNet - it will show you how to process the overage claim to retrieve groups.

我查看了 JWT token ,它不包含任何超额声明(由 _claim_names_claim_sources 标识)。我绝对是 Azure AD 中两个组的成员。

关于是否可以在隐式授予 token 中获取组信息(无论是直接还是间接),我现在似乎还有两个相互矛盾的陈述。

问题 1:我是否应该获得可用于获取团体信息的超额 claim ?如果是这样,我需要做些什么来确保 claim 被发送给我吗?

图形API

无论我是否可以通过图形 API 中的用户链接获得超额 claim ,或者是否必须手动创建链接来获取用户组,我仍然有点不确定如何使用图形 API 进行身份验证。

在收到带有不记名 token (来自 ADAL JS)的请求后,我需要从后端联系图形 API。

问题 2:我可以将相同的不记名 token 发送到图形 API 来读取该用户的目录信息吗?或者我是否需要在应用程序上下文中直接从我的应用程序向图形 API 租户进行身份验证,而不是用户?

最佳答案

对于此处的困惑表示歉意。我会仔细检查有关超额的声明,但无论如何 - 为了快速解锁您,我们假设您需要在没有超额声明帮助的情况下手动获取组。您无法重复使用发送到 Web API 的 token 。该 token 的范围仅限于您的应用程序,任何其他接收者都会(或应该)拒绝它。好消息是,后端可以请求图形范围内的新 token 的流程很容易实现。请参阅https://github.com/AzureADSamples/WebAPI-OnBehalfOf-DotNet - 您的案例的详细信息有点不同(您的 Web API 具有应用程序的受众 == clientid),但涉及的拓扑和代码/调用完全相同。哈!五、

关于angularjs - 在 ADAL JS 中使用 Azure AD 和 OAuth2 隐式授予对声明进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com