【问题标题】:Azure AD B2C Linkedin claims providerAzure AD B2C Linkedin 声明提供程序
【发布时间】:2017-08-28 15:27:40
【问题描述】:

我正在通过自定义策略实施 Linkedin 注册/登录,但是当我单击 LinkedinExchange 按钮时,我从 User Journey Player 收到以下异常:

使用方法“Get”向 URL“https://api.linkedin.com/v1/people/~:(id,first-name,last-name,formatted-name,email-address)”发出请求时发现异常。异常状态代码为“ProtocolError”,并带有以下消息:远程服务器返回错误:(401) Unauthorized.. 远程服务器返回错误:(401) Unauthorized.

这是我添加的 Linkedin 的 ClaimsProvider:

<ClaimsProvider>
  <Domain>linkedin.com</Domain>
  <DisplayName>Linkedin</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Linkedin-OAUTH">
      <DisplayName>Linkedin</DisplayName>
      <Protocol Name="OAuth2" />
      <Metadata>
        <Item Key="ProviderName">linkedin</Item>
        <Item Key="authorization_endpoint">https://www.linkedin.com/oauth/v2/authorization</Item>
        <Item Key="AccessTokenEndpoint">https://www.linkedin.com/oauth/v2/accessToken</Item>
        <Item Key="AccessTokenResponseFormat">json</Item>
        <Item Key="ClaimsEndpoint">https://api.linkedin.com/v1/people/~:(id,first-name,last-name,formatted-name,email-address)?format=json</Item>
        <Item Key="HttpBinding">POST</Item>
        <Item Key="UsePolicyInRedirectUri">0</Item>
        <Item Key="client_id">XXXXXXXXXXXX</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="client_secret" StorageReferenceId="B2C_1A_LinkedinSecret" />
      </CryptographicKeys>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="id" />
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="emailAddress" />
        <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName" />
        <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="lastName" />
        <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="formattedName" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="Linkedin" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="Linkedin" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
        <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
        <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
        <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

有人看到我做错了吗?

【问题讨论】:

  • 尝试添加 oauth2_access_token
  • 非常感谢,添加项目解决了这个问题。现在我想了解添加此项目的必要性,因为 Linkedin 文档说它返回一个“access_token”字段,当我执行 API 调用时,它确实返回字段“access_token”而不是“oauth2_access_token”。在 azure B2C 文档中,我看不到字段 oauth2_access_token ...
  • oauth2 指的是正在使用的协议,而不是字段的名称,但总而言之,您的反馈是正确的,这(在自定义策略中还有很多其他内容)需要更好地记录。

标签: azure-ad-b2c


【解决方案1】:

为了通过自定义策略将 LinkedIn 添加为 Azure AD B2C 中的身份提供者,请确保您在 ClaimsProvider 的 &lt;Metadata&gt; 部分中有以下条目:

&lt;Item Key="ClaimsEndpointAccessTokenName"&gt;oauth2_access_token&lt;/Ite‌​m&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多