Microsoft Entra External ID for customers:注册时自动分配默认应用角色方法问询
借助Azure External ID在用户注册时自动分配默认应用角色的实现方案
可以实现,下面是两种可靠的实现方式:
方法一:通过Azure AD自定义策略(Identity Experience Framework)原生实现
这是最直接的内置方案,无需额外服务,直接修改注册流程的策略文件即可:
- 先在Azure门户的目标应用"应用角色"页面创建好默认角色(比如普通用户角色
User),记录该角色的ID。
- 先在Azure门户的目标应用"应用角色"页面创建好默认角色(比如普通用户角色
- 打开你的自定义策略文件(如
SignUpOrSignin.xml),找到<OutputClaims>节点,添加角色ID的输出声明:
- 打开你的自定义策略文件(如
<OutputClaim ClaimTypeReferenceId="roles" DefaultValue="你的默认角色ID" />
- 找到负责创建用户的TechnicalProfile(如
AAD-UserWriteUsingEmailAddress),添加<PersistedClaims>节点将角色写入用户对象:
- 找到负责创建用户的TechnicalProfile(如
<PersistedClaims> <PersistedClaim ClaimTypeReferenceId="roles" /> </PersistedClaims>
- 将修改后的策略文件上传回Azure AD,新注册的外部用户会自动被分配该默认角色。
方法二:用Microsoft Graph API结合注册触发器实现灵活分配
如果需要根据用户属性(如邮箱域名、注册地区)动态调整角色,可采用这种方式:
- 创建Azure Logic Apps或Azure Function,作为用户注册完成后的处理服务。
- 配置Azure AD的用户创建事件触发(可通过Azure AD审计日志的事件订阅,或Microsoft Graph的变更通知)。
- 在触发的服务中调用Microsoft Graph API的应用角色分配接口,为新用户分配预设角色:
POST https://graph.microsoft.com/v1.0/users/{userId}/appRoleAssignments Content-Type: application/json { "principalId": "{新注册用户的ID}", "resourceId": "{目标应用的服务主体ID}", "appRoleId": "{默认角色的ID}" }
- 确保服务拥有
AppRoleAssignment.ReadWrite.All或Directory.ReadWrite.All的API权限,并完成身份验证配置(如使用托管标识)。
- 确保服务拥有
内容的提问来源于stack exchange,提问作者Purvesh Desai
相关产品推荐
相关产品推荐

