Azure B2C 访问令牌缺少租户 ID。

3
我阅读了B2C访问令牌文档,发现租户ID声明(tid)不在列表中。这与普通的Azure Active Directory访问令牌声明不同。
我需要在B2C访问令牌(使用B2C策略)上拥有此声明以使令牌缓存正常工作,但我不知道如何将其包含在有效载荷中。
如何在B2C访问令牌有效载荷中包含TenantId(tid)声明?

AAD在多租户应用中包含它,因为用户可能使用任何租户登录。在B2C中,他们将针对您的B2C租户进行登录。因此,不需要租户ID声明。那么令牌缓存为什么需要它呢? - juunas
1
@juunas,令牌缓存需要它为已登录用户创建唯一的缓存键。该键是ObjectIdentifier和TenantId的组合。这种组合的原因是因为MSAL通过“IAccount”表示用户,如果您在多个应用程序中使用您的MSA帐户,则ObjectIdentifier将相同,而tenantId将是区分这些帐户的关键。 - Tiago B
1
你看过这个吗:https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/AAD-B2C-specifics#known-issue-with-azure-b2c - juunas
@TiagoBrenck,你找到解决方案了吗? - Dash
不是一个好的解决方案,但是可以通过一些变通方法实现。我在应用程序配置中添加了一个包含“tid”值的键。 - Tiago B
1个回答

0

不确定这是否真的能帮到你。但我已经开始使用自定义策略,这样可以更好地控制返回给用户的内容。

在我的示例中,我是这样返回tenantId的:

File: SignUpOrSignin.xml


<RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />
        <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="picture" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
        <OutputClaim ClaimTypeReferenceId="correlationId" AlwaysUseDefaultValue="true" DefaultValue="{Context:CorrelationId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>


Azure B2C 自定义策略比我们通常预期的要复杂得多,但另一方面,也有更多机会来自定义身份验证流程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接