如何解决来自 Azure AD 联合的 ID 令牌不包含“角色”声明
我创建了一个 Azure B2C 租户,并为 Azure Active Directory (AD) 创建了自定义 IDP。 我创建了从 B2C 到联合到 Azure AD 并获取访问令牌的用户流。
我遵循的步骤。
- 创建了 azure AD 应用程序
- 生成了一个秘密
- 创建自定义角色
- 从 AD 企业应用程序为用户分配自定义角色
- 在 B2C 中创建了 IDP
- 创建 B2C 应用
- 创建登录策略
- 为联邦添加了 IDP
- 运行用户流程
- 通过联盟登录
作为联合的结果,azure AD 成功检索了令牌 (idp_access_token
)。但问题是从 azure AD 检索的令牌不包含角色声明。我创建了两个应用程序角色并将它们分配给用户。但是我在令牌中看不到任何角色。
我遵循了以下文档。 https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps
这对联邦无效吗?通过联盟分配应用角色的确切方法是什么。
这是创建 B2C IDP 所需的详细信息。
如何用范围解决方案映射这些细节?
解决方法
需要在Azure AD中创建两个应用,一个代表客户端应用,另一个代表api应用,然后使用客户端应用调用api申请。
首先需要暴露Azure保护的后端应用的API并添加客户端应用:
接下来需要设置api应用AppRole,也就是你自定义的角色,会在manifest中显示。
然后您可以将角色分配给用户。转到企业应用程序>您的 api 应用程序>用户和组。
接下来,转到客户端应用程序,让您的客户端应用程序访问您的后端 api:
- 在“API 权限”下点击“添加权限”,然后点击“我的 API”标签。
- 找到您的后端应用程序并选择适当的范围。
- 点击“添加权限”。
- 为您的 API 授予管理员许可。
接下来需要使用auth code flow获取访问令牌,需要先登录用户获取授权码,然后使用授权码兑换访问令牌。
>解析 v2.0 令牌,它包含 scp
声明和 roles
声明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。