jwt - 使用 native 应用程序类型登录 AAD 时,Azure AD JWT 缺少 "groups"节点

标签 jwt azure-active-directory

登录 native 应用程序时获取的 JWT 不会发出登录 Web 应用程序时获取的 JWT 发出的“组”节点。

两个应用程序注册都配置为发出组 “groupMembershipClaims”:“安全组”

这是一个隐式授予场景

最佳答案

更新

这适用于任何希望稍后了解解决方案的人。

从 @LastTribunal 获取更多信息后,发现有 3 个独立的应用程序正在使用(一个 Web 应用程序 SPA、一个基于 .NET 的 native 应用程序和一个 Web API)。第三个应用程序的 list ,即 Web api 缺少 "groupMembershipClaims": "SecurityGroup"

底线:即使从 native 应用程序获取 token 来访问 Web API,只要正确配置了 Web API 的 list ,访问 token 也确实包含组声明。

这是 @LastTribunal 正在关注的示例的链接,该示例在 native 应用程序中存在问题。 Integrating Azure AD into a Windows desktop application using interactive authentication

初始答案

您要检查的用户可能属于 6 个或更多组。在隐式授权流的情况下,如果完整组声明将 URI 片段扩展到 URL 长度限制之外,Azure AD 会向您发送超额声明,而不是“组”声明。

因此,您可能会通过“hasgroups”或“groups:src1”等声明获得超额指示器,具体取决于 token 的长度是否会成为问题。

例如在单页应用程序 (SPA) 的情况下,您将得到“hasgroups”声明,而在使用 ADAL.NET 库的基于 .NET 的 native 应用程序( token 长度不是问题)的情况下,我看到“groups:src” "用于超额指示。

基本上,您会得到一个提示,即用户属于很多组(当前很多意味着 6 个或更多),并且您必须进行第二次调用才能获取有关该用户所属的所有组的信息。

微软文档:Link

enter image description here

关于jwt - 使用 native 应用程序类型登录 AAD 时,Azure AD JWT 缺少 "groups"节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883782/

相关文章:

javascript - Vue SPA - 检查用户是否经过身份验证,如果没有则重定向到登录

javascript - 使用 Ed25519 KeyPair 对 JWS(json web 签名)进行签名和验证

azure - 是否可以更改 Azure SQL 实例进行身份验证所依据的 Azure AD?

angular - 已发送静默登录请求,但没有用户登录并收到错误代码 AADSTS50058

Azure-使用 CLI 获取刷新 token 过期时间

spring - 如何在 Spring Security 中允许单个 URL

spring-boot - Spring Security with JWT tokens 的主要概念(Spring boot with REST controllers)

java - JWT 验证失败 : Key bytes cannot be specified for RSA signatures. 请指定 PublicKey 或 PrivateKey 实例

node.js - 尝试刷新 token 时出现 invalid_grant 错误

entity-framework - 如何使用 Azure AD/OpenId 进行身份验证但使用基于 Entity Framework 的用户/角色数据