【问题标题】:Get custom attribute before to authenticate user在验证用户之前获取自定义属性
【发布时间】:2022-09-27 18:14:10
【问题描述】:

我有多个 B2C 用户,密码为空白,extension_isNewsletter 自定义用户属性为 true。其他 B2C 用户使用他们的邮件和密码(非空白)注册。在登录页面中,我想检查在对用户进行身份验证之前是否存在 extension_isNewsletter 声明。如果存在,将执行 REST API 调用,并且不会执行任何身份验证过程。请问可以吗?

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


    【解决方案1】:

    对的,这是可能的。我修改了 SelfAsserted-LocalAccountSignin-Email TechnicalProfile (TP):

    <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
              <DisplayName>Local Account Signin</DisplayName>
              <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
              <IncludeInSso>false</IncludeInSso>
              <InputClaims>
                <InputClaim ClaimTypeReferenceId="signInName" DefaultValue="{OIDC:LoginHint}" AlwaysUseDefaultValue="true" />
              </InputClaims>
              <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
                <OutputClaim ClaimTypeReferenceId="password" DefaultValue="" />
                <OutputClaim ClaimTypeReferenceId="objectId" />
                <OutputClaim ClaimTypeReferenceId="extension_isNewsletter"/>
              </OutputClaims>
              <ValidationTechnicalProfiles>
                <ValidationTechnicalProfile ReferenceId="AAD-UserIsNewsletter" />
              </ValidationTechnicalProfiles>
              <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
            </TechnicalProfile>

    而validationTechnicalProfile (AAD-UserIsNewsletter) 将是:

    <TechnicalProfile Id="AAD-UserIsNewsletter">
              <Metadata>
                  <Item Key="Operation">Read</Item>
                  <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
              </Metadata>
              <IncludeInSso>false</IncludeInSso>
              <InputClaims>
                  <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames.emailAddress" Required="true" />
              </InputClaims>
              <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="objectId" />
                <OutputClaim ClaimTypeReferenceId="extension_isNewsletter" />
              </OutputClaims>
              <IncludeTechnicalProfile ReferenceId="AAD-Common" />
            </TechnicalProfile>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多