我正在使用自定义策略,我看到内置策略中存在但自定义策略中不存在的字段“电子邮件”。有一个名为 otherMails 的声明。

  • 我想在我的 token 中返回一个带有用户电子邮件列表的 emails 声明。
  • 我希望在我的注册/登录和密码重置策略中声明。

  • 我正在使用入门包中的自定义策略。但是我不知道我应该更改哪个 TechnicalProfiles。我尝试了几件事,但没有用。

    提前致谢!

    最佳答案

    编写本地帐户时:您必须使用“CreateOtherMailsFromEmail”声明转换从“email”声明创建“otherMails”声明,然后在“AAD-UserWriteUsingLogonEmail”技术配置文件中保留“otherMails”声明:

    <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
      ...
      <IncludeInSso>false</IncludeInSso>
      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
      </InputClaimsTransformations>
      <InputClaims>
        ...
      </InputClaims>
      <PersistedClaims>
        ...
        <PersistedClaim ClaimTypeReferenceId="otherMails" />
      </PersistedClaims>
      <OutputClaims>
        ...
        <OutputClaim ClaimTypeReferenceId="otherMails" />
      </OutputClaims>
      ...
    </TechnicalProfile>
    

    然后,您必须从用于注册本地帐户的“LocalAccountSignUpWithLogonEmail”技术配置文件中传递“otherMails”声明:

    <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
        ...
        <OutputClaims>
            ...
            <OutputClaim ClaimTypeReferenceId="otherMails" />
        </OutputClaims>
    </TechnicalProfile>
    

    编写社交帐户时:“otherMails”声明已根据“电子邮件”声明创建,然后保留在“AAD-UserWriteUsingAlternativeSecurityId”技术配置文件中。

    然后,您必须从用于注册社交帐户的“SelfAsserted-Social”技术配置文件中传递“otherMails”声明:

    <TechnicalProfile Id="SelfAsserted-Social">
        ...
        <OutputClaims>
            ...
            <OutputClaim ClaimTypeReferenceId="otherMails" />
        </OutputClaims>
    </TechnicalProfile>
    

    读取本地或社交帐户时:“otherMails”声明已在“AAD-UserReadUsingObjectId”、“AAD-UserReadUsingEmailAddress”和“AAD-UserReadUsingAlternativeSecurityId”技术配置文件中读取。

    然后,您必须从调用以恢复本地密码的“LocalAccountDiscoveryUsingEmailAddress”技术配置文件中传递“otherMails”声明:

    <TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
        ...
        <OutputClaims>
            ...
            <OutputClaim ClaimTypeReferenceId="otherMails" />
        </OutputClaims>
    </TechnicalProfile>
    

    要将“otherMail”声明作为注册/登录和密码重置策略中的“电子邮件”发布:您必须将“otherMails”声明作为 <OutputClaim /> 添加到依赖方策略中:

    <RelyingParty>
        ...
        <TechnicalProfile Id="PolicyProfile">
            <OutputClaims>
                ...
                <OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
            </OutputClaims>
        </TechnicalProfile>
    </RelyingParty>
    

    10-08 09:20