当前位置: 首页 > 面试题库 >

使用ADAL JS中的Azure AD和OAuth2隐式授予对组进行声明

马高谊
2023-03-14
问题内容

我们正在Azure中开发多租户SaaS产品,该产品具有AngularJS前端和Web API后端。我们使用Azure AD进行身份验证,并将其与ADAL
JS(使用OAuth2隐式授予)挂钩。作为多租户应用程序,我们允许客户针对自己的Azure AD(可以连接也可以不连接到本地AD)进行身份验证。

到目前为止,这一切都很好。ADAL
JS将用户带到Azure登录页面,并且在用户通过身份验证后,将颁发OAuth2令牌。然后,此JWT令牌与所有API调用一起作为承载令牌发送,在这里我们有自己的声明转换过程,用于将Azure传入的声明映射到应用程序声明。

我们尝试在广告组中做到这一点,而不是在声明转换过程中指定单个用户。这使我们的客户可以在其广告中包含安全组,然后我们的应用程序将使用该安全组来映射到正确的应用程序声明。

问题

groups尽管已在AAD应用程序清单中将设置groupMembershipClaims为,但我们收到的JWT令牌不包含属性SecurityGroup。因为我已经读了这则Twitter距离Vittorio那

隐式授予不会发送这些声明,因为它会返回查询字符串中的令牌-很容易超过最大长度

经过进一步调查,我还发现了Vittorio的回答,内容为

我已经验证过,在隐式授予的情况下,您总是会通过超额索偿获得分组。请参考https://github.com/AzureADSamples/WebApp-
GroupClaims-DotNet/tree/master/WebApp-GroupClaims-
DotNet-它会向您展示如何处理超额索赔以检索组。

我查看了JWT令牌,它不包含任何超额索赔(由_claim_names和标识_claim_sources)。我绝对是Azure AD中两个小组的成员。

现在,对于是否有可能在隐式授予令牌中获取组信息(无论是直接还是间接),我似乎也有两个矛盾的说法。

问题1:是否应该获得我可以用来获取组信息的超额声明? 如果是这样,我是否需要做任何事情以确保将索赔发送给我?

图形API

是否可以通过图API中的用户链接获得超额索偿要求,或者是否必须手工制作链接以获取用户组,我仍然不确定如何使用图API进行身份验证。

收到带有承载令牌的请求(来自ADAL JS)后,我需要从后端联系图形API。

问题2:我可以向图API发送相同的承载令牌以读取该用户的目录信息吗?
还是我需要在应用程序而不是用户的上下文中直接从应用程序向图形API租户进行身份验证?


问题答案:

对此表示歉意。我将仔细检查有关超额费用的声明,但是在任何情况下-
为了快速阻止您,让我们假设您需要在没有超额费用主张的情况下手动获取组。您不能重复使用发送到Web
API的令牌。该令牌的作用范围仅限于您的应用,其他任何收件人都将(或应该)拒绝它。好消息是,后端可以轻松请求针对Graph限定范围的新令牌的流程。参见https://github.com/AzureADSamples/WebAPI-
OnBehalfOf-DotNet-您的情况有所不同(您的Web API具有您的应用的受众== clientid),但拓扑和代码/调用涉及的完全相同。HTH!V.



 类似资料:
  • 我们正在Azure中开发一个多租户SaaS产品,它具有AngularJS前端和Web API后端。我们使用Azure AD进行身份验证,并将其与ADAL JS挂钩(使用OAuth2隐式授权)。作为一个多租户应用程序,我们允许客户对他们自己的Azure广告进行身份验证(该广告可能连接到也可能不连接到内部广告)。 到目前为止,这一切都运行良好。ADAL JS将用户带到Azure登录页面,一旦用户进行了

  • 我试图从DocuSign API获取用户信息后,我收到访问令牌(response_type=令牌)从隐式授予oAuth2调用。 我的代码如下所示: 有几点...DSAccess stoken是一个变量,其中包含从Documark接收的承载访问令牌。代码执行成功,但是当它假设包含json时,响应数据看起来像html。我还尝试了,但这也不起作用。我还尝试了而不是beFore发送,但这也不起作用。 我假

  • 我对以下涉及oauth2的流程有一些问题: webapp1.xyz.com是具有授权代码授予类型的注册客户端,以下是当前流程: 用户登录并使用授权码重定向到webapp1.xyz.com webapp1.xyz.com交换访问令牌的授权代码并将其存储到会话 webapp1.xyz.com服务器端需要通过传递访问令牌调用webapp2.xyz.com api webapp1.xyz.com具有SPA

  • 我们已经实现了 OAuth2 授权服务器(和身份提供程序)。现在,我们要执行负载测试来衡量系统性能。 我现在遇到的具体问题是,我想对授权代码流进行负载测试。到目前为止我一直在用JMeter。但是我不知道如何为所需的redirect_uri提供一个endpoint来完成这个流程。到底有没有办法做到这一点,还是我运气不好?谷歌帮不上忙。如果JMeter做不到,有没有工具可以?

  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者

  • 本文向大家介绍VBA 隐式和显式声明,包括了VBA 隐式和显式声明的使用技巧和注意事项,需要的朋友参考一下 示例 如果代码模块不包含Option Explicit在模块顶部,则编译器将在使用它们时自动(即“隐式”)为您创建变量。它们将默认为变量类型Variant。 在上面的代码,如果Option Explicit指定,代码将中断,因为它缺少必要Dim的陈述someVariable和someOthe