我一直在尝试制作一个 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 和 v2
ClaimsEndpoint
网址 - 禁用所有
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
,但我认为这不是问题的实质。
如果有人可以帮助我在这里发现问题,我将不胜感激。我有点卡在这一点上。