Я пытался создать 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 и переключение учетных данных - тот же результат
- Обмен URL-адресов v1 и v2
ClaimsEndpoint
- Отключение всего
OutputClaimsTransformations
и всего, что казалось вычисленным - тот же результат - Создание политики через портал (не настраиваемой), которая позволяет мне войти в систему и создать новую учетную запись в AAD; это не то, что мне нужно, но указывает на то, что учетные данные и настройка приложения LI должны быть в порядке
- Отслеживание сетевых вызовов - я вижу, что ответ от 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
, но я не думаю, что это имеет значение для проблемы.
Если кто-то может помочь мне определить проблему здесь, я был бы благодарен. Я немного застрял на этом этапе.