如何在 Azure Ad B2C 上使用自定义角色?
How can I use Custom Roles on Azure Ad B2C?
我的 API 需要三种类型的用户,我想使用自定义角色定义来管理它。是否可以在 Azure B2c 上创建角色,然后通过 Microsoft Graph 将这些角色分配给用户 API?
您可以创建一个名为 extension_role
的扩展属性,然后使用图形 API 将角色名称写入该属性。
有关如何创建和写入扩展属性的示例 here。
然后在 AAD B2C 自定义策略中,读取扩展属性并将其插入到令牌中。
例如,读取符号上的属性in/up:
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" Required="true" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_role" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
插入令牌:
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_role" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
我正在朝着同一个目标努力,所以这是我直到现在才发现的:
- 将自定义策略与 Identity Esperience Framework (IEF) 结合使用:这是一个 example of custom policies on RBAC example:
- 使用已连接用户的 objectId 和访问令牌手动调用图形 API(使用 msal 库)以获得用户所属的组:在这种情况下,您将创建一个组对于每个角色,根据他们的角色将用户影响到正确的组,通过找到用户组,你知道他的角色是什么,这里是 example 在 .Net5 web [=23= 上实现这种授权] 和网络应用程序。
没有找到任何与使用角色管理用户访问权限相关的内容,所以如果您找到任何内容,请毫不犹豫地与我们分享。谢谢
我的 API 需要三种类型的用户,我想使用自定义角色定义来管理它。是否可以在 Azure B2c 上创建角色,然后通过 Microsoft Graph 将这些角色分配给用户 API?
您可以创建一个名为 extension_role
的扩展属性,然后使用图形 API 将角色名称写入该属性。
有关如何创建和写入扩展属性的示例 here。
然后在 AAD B2C 自定义策略中,读取扩展属性并将其插入到令牌中。
例如,读取符号上的属性in/up:
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="objectId" Required="true" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_role" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
插入令牌:
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_role" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
我正在朝着同一个目标努力,所以这是我直到现在才发现的:
- 将自定义策略与 Identity Esperience Framework (IEF) 结合使用:这是一个 example of custom policies on RBAC example:
- 使用已连接用户的 objectId 和访问令牌手动调用图形 API(使用 msal 库)以获得用户所属的组:在这种情况下,您将创建一个组对于每个角色,根据他们的角色将用户影响到正确的组,通过找到用户组,你知道他的角色是什么,这里是 example 在 .Net5 web [=23= 上实现这种授权] 和网络应用程序。
没有找到任何与使用角色管理用户访问权限相关的内容,所以如果您找到任何内容,请毫不犹豫地与我们分享。谢谢