繁体   English   中英

电子邮件声明不是来自联合 OIDC ADB2C IDP

[英]email claim not coming from federated OIDC ADB2C IDP

我们正在使用 B2C 并已使用 OIDC 成功连接了 AD 联盟,一切正常。 但是,我们希望启用外部 B2C IdP 实例来启用另一个联合。 我们将主机 B2C 配置为与 AD 相同,从联合源获取电子邮件、名字、姓氏。

这是在我们的 base.xml 文件中启用联合的技术配置文件

<ClaimsProvider>
  <Domain>testdomain</Domain>
  <DisplayName>Login using External Tenant</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="TestDomain">
      <DisplayName>Test domain</DisplayName>
      <Description>Login with your test domain account</Description>
      <Protocol Name="OpenIdConnect"/>
      <Metadata>
        <Item Key="METADATA">Link to the federated tenant well known endpoint</Item>
        <Item Key="client_id">xxx</Item>
        <Item Key="response_types">code</Item>
        <Item Key="scope">openid email profile</Item>
        <Item Key="response_mode">form_post</Item>
        <Item Key="HttpBinding">POST</Item>
        <Item Key="UsePolicyInRedirectUri">false</Item>
        <Item Key="ClaimTypeOnWhichToEnable">identityProviders</Item>
        <Item Key="ClaimValueOnWhichToEnable">testdomain</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="client_secret" StorageReferenceId="testdomain"/>
      </CryptographicKeys>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="login_hint" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
        <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
        <OutputClaim ClaimTypeReferenceId="objectIdExternalTenant" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="federatedGivenName" PartnerClaimType="given_name" DefaultValue="Not Set"/>            
        <OutputClaim ClaimTypeReferenceId="federatedSurname" PartnerClaimType="family_name" DefaultValue="Not Set"/>      
        <OutputClaim ClaimTypeReferenceId="federatedDisplayName" PartnerClaimType="name" DefaultValue="Not Set"/>     
        <OutputClaim ClaimTypeReferenceId="federatedIDPEmailAddress" PartnerClaimType="email" DefaultValue="Not Set"/>     
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
        <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
        <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
      <EnabledForUserJourneys>OnItemExistenceInStringCollectionClaim</EnabledForUserJourneys>
    </TechnicalProfile>
    

这是联邦 idp 端的应用注册设置。 请注意设置说您只能启用 openid 和 offline_access 范围。

见附图fed1 fed2

当我们通过我们的家庭领域发现页面登录时,它会将我们带到联合 Idp,我们登录到该页面但我们无法取回电子邮件声明,given_name、family_name、name、sub 都在那里,但它没有填充电子邮件声明. 任何想法为什么这个说法不会通过?

提前致谢。

而不是“电子邮件”,尝试“ signInNames.emailAddress ”。

在您的TrustFrameworkBase.xml文件中搜索“ signInNames.emailAddress ”以确认它存在。

以下是用户属性列表:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-profile-attributes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM