将 Azure Active Directory 组添加到声明中
Add Azure Active Directory Groups to Claims
我们正在从 .NET Framework 4.6.2 迁移一个应用程序,该应用程序由 Angular 前端和 ASP.NET Core 2.1 Web Api 后端 运行 组成场所到 Azure。
应用程序使用 Active Directory 组进行授权。
为了促进迁移过程,我们希望使用同步到 Azure Active Directory 的相同组。
身份验证工作正常,但是当我在 Web Api 控制器中检查用户对象中的声明时,我在其中找不到任何组声明。
我在用户对象中看到的唯一与组相关的声明是一个名为“hasGroups”且值为 true 的声明,但我需要知道用户属于哪些组。
我知道我可以通过 Graph API 查询 AD,但如果服务可以直接提供此信息,我更喜欢无缝方式。
更新:我在 Angular 前端使用 MSAL 1.0 和隐式流来验证用户并获得访问令牌来验证对 Web 的调用 Api。
更新 2:
这是后端的配置 api:
- 我在“令牌配置”页面应用了以下配置
我在“证书和机密”页面创建了一个客户端机密
我在“公开 API”选项卡中创建了一个范围,并将客户端应用程序添加到其中
我添加了 API 权限
在前端应用程序中,我在身份验证页面中激活了“访问令牌”和“ID 令牌”选项:
我在同一页面上配置了重定向 url
更新 3:我将后端升级到 .net 5,仍然可以重现问题(在索赔收集中没有角色)。
据我了解,您希望获取当前登录用户所在的所有组作为令牌声明。
看来您的方向是正确的,但请确保您配置的是 ASP.NET Core 2.1 Web Api Azure AD 应用程序而不是 Angular 前端 Azure AD 应用程序。
我也做了一些测试,这是我的 ASP.NET Core 2.1 Web Api Azure AD 应用程序的令牌配置:
我调用 Azure AD /token
端点来模拟用户登录:
客户端 ID 是 Angular Frontend Azure AD APP ID 和 ASP.NET Core 2.1 Web Api Azure AD 应用程序是 01abd597-4b2f-478e-bbb1-6d8759099346
解析令牌:
如您所见,群组声明已添加到令牌中。
如果您有任何问题,请告诉我。
更新请求结果:
在我看来,主要问题是,我尝试登录的用户属于 5 个以上的组。在这种情况下,这些组不会添加到声明中,而是我只会得到提到的“hasGroups”条目。
This Whosebug issue 给我指出了这个方向。
因此,对于您的用户可能拥有 5 个以上 AD 组的情况,您将必须使用 MS Graph 手动查询组或寻找其他位置来存储您的组。
我们正在从 .NET Framework 4.6.2 迁移一个应用程序,该应用程序由 Angular 前端和 ASP.NET Core 2.1 Web Api 后端 运行 组成场所到 Azure。
应用程序使用 Active Directory 组进行授权。
为了促进迁移过程,我们希望使用同步到 Azure Active Directory 的相同组。
身份验证工作正常,但是当我在 Web Api 控制器中检查用户对象中的声明时,我在其中找不到任何组声明。
我在用户对象中看到的唯一与组相关的声明是一个名为“hasGroups”且值为 true 的声明,但我需要知道用户属于哪些组。
我知道我可以通过 Graph API 查询 AD,但如果服务可以直接提供此信息,我更喜欢无缝方式。
更新:我在 Angular 前端使用 MSAL 1.0 和隐式流来验证用户并获得访问令牌来验证对 Web 的调用 Api。
更新 2: 这是后端的配置 api:
- 我在“令牌配置”页面应用了以下配置
我在“证书和机密”页面创建了一个客户端机密
我在“公开 API”选项卡中创建了一个范围,并将客户端应用程序添加到其中
我添加了 API 权限
在前端应用程序中,我在身份验证页面中激活了“访问令牌”和“ID 令牌”选项:
更新 3:我将后端升级到 .net 5,仍然可以重现问题(在索赔收集中没有角色)。
据我了解,您希望获取当前登录用户所在的所有组作为令牌声明。 看来您的方向是正确的,但请确保您配置的是 ASP.NET Core 2.1 Web Api Azure AD 应用程序而不是 Angular 前端 Azure AD 应用程序。
我也做了一些测试,这是我的 ASP.NET Core 2.1 Web Api Azure AD 应用程序的令牌配置:
我调用 Azure AD /token
端点来模拟用户登录:
01abd597-4b2f-478e-bbb1-6d8759099346
解析令牌:
如您所见,群组声明已添加到令牌中。
如果您有任何问题,请告诉我。
更新请求结果:
在我看来,主要问题是,我尝试登录的用户属于 5 个以上的组。在这种情况下,这些组不会添加到声明中,而是我只会得到提到的“hasGroups”条目。
This Whosebug issue 给我指出了这个方向。
因此,对于您的用户可能拥有 5 个以上 AD 组的情况,您将必须使用 MS Graph 手动查询组或寻找其他位置来存储您的组。