2

我一直在尝试制作一个 UserJourney,它将 LinkedIn 社交帐户与现有的 Local AAD B2C 帐户相关联。我使用以下内容作为指南:

当我在 Microsoft 帐户(即 OpenIdConnect)中进行配置时,一切正常,所以我相信我的 UserJourney 部分是正确的。

当我尝试使用 LinkedIn OAuth2 ClaimsProvider 时,它总是失败并出现一般错误:

AADB2C90289: We encountered an error connecting to the identity provider. Please try again later.
Correlation ID: 90f20acf-b725-405d-a3ac-120e5b559f6f
Timestamp: 2020-01-03 15:17:54Z

我尝试过的事情:

  • 在开发人员模式下连接 Application Insights - 除了上述信息之外,没有跟踪、日志记录或错误
  • 创建第二个 LinkedIn 应用程序并切换凭据 - 结果相同
  • 交换 v1 和 v2ClaimsEndpoint网址
  • 禁用所有OutputClaimsTransformations看起来经过计算的东西- 相同的结果
  • 通过门户(非自定义)创建允许我登录并在 AAD 中创建新帐户的策略;这不是我需要它做的,但确实表明 LI App 的凭据和设置必须没问题
  • 跟踪网络调用 - 我可以看到来自 LinkedIn 的响应被发布到https://mydomain.b2clogin.com/mydomain.onmicrosoft.com/oauth2/authresp一个code和一个state参数,所以我认为问题在于处理响应

正如我所提到的,连接 MSA-OIDC 提供程序很好,尽管它不是 OAuth2。因此,我认为问题在于我如何设置 OAuth2 连接,但我无法发现问题

这是我的材料部分ClaimsProvider

<ClaimsProvider>
    <Domain>linkedin.com</Domain>
    <DisplayName>LinkedIn</DisplayName>
    <TechnicalProfiles>
        <TechnicalProfile Id="LinkedIn-OAUTH-Base">
            <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="ClaimsEndpoint">https://api.linkedin.com/v2/me</Item>
                <!--<Item Key="ClaimsEndpoint">https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address)</Item>-->
                <Item Key="ClaimsEndpointAccessTokenName">oauth2_access_token</Item>
                <Item Key="ClaimsEndpointFormatName">format</Item>
                <Item Key="ClaimsEndpointFormat">json</Item>
                <Item Key="scope">r_emailaddress r_liteprofile</Item>
                <Item Key="HttpBinding">POST</Item>
                <Item Key="external_user_identity_claim_id">id</Item>
                <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
                <Item Key="ResolveJsonPathsInJsonTokens">true</Item>
                <Item Key="UsePolicyInRedirectUri">0</Item>
                <Item Key="response_type">code</Item>
                <Item Key="client_id">0</Item>
            </Metadata>
            <CryptographicKeys>
                <Key Id="client_secret" StorageReferenceId="B2C_1A_LinkedInSecret" />
            </CryptographicKeys>
        </TechnicalProfile>
        <TechnicalProfile Id="LinkedIn-OAUTH-Link">
            <DisplayName>Link LinkedIn</DisplayName>
            <Metadata>
                <Item Key="ClaimTypeOnWhichToEnable">issuers</Item>
                <Item Key="ClaimValueOnWhichToEnable">linkedin.com</Item>
            </Metadata>
            <InputClaims />
            <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="issuerUserIdToLink" PartnerClaimType="id" />
                <OutputClaim ClaimTypeReferenceId="issuerToLink" DefaultValue="linkedin.com" AlwaysUseDefaultValue="true" />
            </OutputClaims>
            <OutputClaimsTransformations>
                <OutputClaimsTransformation ReferenceId="CreateUserIdentityToLink" />
                <OutputClaimsTransformation ReferenceId="AppendUserIdentityToLink" />
            </OutputClaimsTransformations>
            <IncludeTechnicalProfile ReferenceId="LinkedIn-OAUTH-Base" />
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
            <EnabledForUserJourneys>OnItemAbsenceInStringCollectionClaim</EnabledForUserJourneys>
        </TechnicalProfile>
    </TechnicalProfiles>
</ClaimsProvider>

注意:我删除了该client_id值,但这是在真实版本中设置的。

注意 2:同样在真实版本中,配置文件与配置-Link文件位于不同的文件中-Base,但我认为这不是问题的实质。

如果有人可以帮助我在这里发现问题,我将不胜感激。我有点卡在这一点上。

4

0 回答 0