jwt - 使用本机应用类型登录 AAD 时,Azure AD JWT 缺少“组”节点
问题描述
登录 Native App 时获取的 JWT 不会像登录 Web App 时获取的 JWT 那样发出“groups”节点。
两个应用注册都配置为发出组 “groupMembershipClaims”:“SecurityGroup”
这是一个隐式授权方案
解决方案
更新
这适用于希望稍后了解解决方案的任何人。
从@LastTribunal 获得更多信息后,发现有 3 个单独的应用程序正在使用中(一个 Web 应用程序 SPA、一个基于 .NET 的本机应用程序和一个 Web API)。第三个应用程序的清单,即缺少 web api"groupMembershipClaims": "SecurityGroup"
底线:即使从本机应用程序获取令牌以访问 web api,只要 web api 的清单配置正确,访问令牌确实包含组声明。
这是指向 @LastTribunal 所关注的示例的链接,并且在本机应用程序中存在问题。使用交互式身份验证将 Azure AD 集成到 Windows 桌面应用程序中
初步答案
您要检查的用户可能属于 6 个或更多组。在隐式授权流的情况下,如果完整组声明将 URI 片段扩展到 URL 长度限制之外,Azure AD 会向您发送超额声明而不是“组”声明。
因此,您可能会通过“hasgroups”或“groups:src1”之类的声明获得超额指示符,具体取决于令牌的长度是否会成为问题。
例如,在单页应用程序 (SPA) 的情况下,您将收到“hasgroups”声明,而在使用 ADAL.NET 库的基于 .NET 的本机应用程序的情况下,令牌长度不是问题,我已经看到“组:src" 用于超龄指示。
基本上你会得到一个提示,用户是很多组的一部分(目前很多意味着 6 个或更多),你必须进行第二次调用以获取有关该用户所属的所有组的信息。
Microsoft Docs:链接
推荐阅读
- c# - C#递归收益返回不返回任何东西
- python - 如何打印出对象列表?
- python - 无法使用 Selenium Python 从第二个下拉菜单中选择一个选项
- reactjs - 两个带有 React 和 Firebase 函数的 package.json 文件
- amazon-web-services - 如何在 AWS codepipeline 中创建管道即代码
- c# - 无法从 docker 容器连接主机中的 MYSQL 数据库
- python - 如何在python中的变量表上运行引导平均值?
- python - 操作数数据类型 nvarchar 对 sum 运算符无效
- windows - 阅读通过任务计划程序运行的隐藏 powershell 脚本的内容
- r - 如何用R估计指数函数的参数?