如何在 Azure 广告 B2C 上使用自定义角色?
Posted
技术标签:
【中文标题】如何在 Azure 广告 B2C 上使用自定义角色?【英文标题】:How can I use Custom Roles on Azure Ad B2C? 【发布时间】:2022-01-19 20:38:45 【问题描述】:我的 API 需要三种类型的用户,我想使用自定义角色定义来管理它。是否可以在 Azure B2c 上创建角色,然后通过 Microsoft Graph API 将这些角色分配给用户?
【问题讨论】:
mrochon.azurewebsites.net/2019/05/06/… 谢谢,但它似乎很老的答案。我认为 azure ad b2c 有内置的更好的解决方案。 【参考方案1】:您可以创建一个名为 extension_role
的扩展属性,并使用 Graph API 将角色名称写入此属性。
关于如何创建和写入扩展属性here的示例。
然后在 AAD B2C 自定义策略中,读取扩展属性并将其插入到令牌中。
例如,在登录/注册时读取属性:
<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>
【讨论】:
【参考方案2】:我正朝着同一个目标努力,所以直到现在我才发现:
将自定义策略与身份体验框架 (IEF) 结合使用:这是example of custom policies on RBAC example: 使用已连接用户的 objectId 和访问令牌手动调用 Graph API(使用 msal 库)以获得用户所属的组:在这种情况下,您将为每个角色创建一个组,影响用户根据他们的角色分配到正确的组,通过找到用户组,你知道他的角色是什么,这是在 .Net5 web api 和 web App 上实现这种授权的example。没有找到与使用角色管理用户访问权限相关的任何内容,因此如果您找到任何内容,请随时分享。谢谢
【讨论】:
以上是关于如何在 Azure 广告 B2C 上使用自定义角色?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 Xamarin 表单中删除/自定义 Azure AD B2C 身份验证 webview 页面标题栏?
Azure B2C 自定义 - 更改“使用您的社交帐户登录”文本
如何填充 Azure Active Directory B2C 用户自定义用户属性?