如何在 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 用户自定义用户属性?

我如何获得Azure Active Directory B2c登录用户角色?

将声明添加到令牌 Azure B2C

蔚蓝 B2C。使用 Azure 门户编辑自定义属性