【问题标题】:How can I use Custom Roles on Azure Ad B2C?如何在 Azure 广告 B2C 上使用自定义角色?
【发布时间】:2022-01-19 20:38:45
【问题描述】:

我的 API 需要三种类型的用户,我想使用自定义角色定义来管理它。是否可以在 Azure B2c 上创建角色,然后通过 Microsoft Graph API 将这些角色分配给用户?

【问题讨论】:

标签: azure azure-ad-b2c azure-ad-graph-api azure-ad-b2c-custom-policy


【解决方案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

    没有找到与使用角色管理用户访问权限相关的任何内容,因此如果您找到任何内容,请随时分享。谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 2021-10-12
      • 2021-07-26
      • 2021-07-24
      • 1970-01-01
      • 2018-04-04
      相关资源
      最近更新 更多