사용자 정의 정책을 사용하여 Azure AD B2C에서 사용자 정의 제공자로 GitHub를 설정 중입니다. 로그인 페이지로 돌아가 올바른 하늘색 광고 링크로 다시 연결할 수는 있지만 Azure AD B2C의 서버 오류는 항상 OAUTH의 두 번째 부분을 거부합니다.Azure AD B2C - GitHub 용 사용자 정의 제공자가 액세스 토큰을 얻을 수 없습니다.
앱 통계 추적 로그를 보면 "OAuth 응답이 잘못되었습니다."및 "값을 파싱하는 동안 예기치 않은 문자가 발생했습니다 :"라는 메시지가 표시됩니다. 여기에 내가 설정 한 정책 제공자는 다음과 같습니다
<ClaimsProvider>
<Domain>github.com</Domain>
<DisplayName>GitHub</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="GitHub-OAUTH">
<DisplayName>GitHub</DisplayName>
<Protocol Name="OAuth2" />
<Metadata>
<Item Key="ProviderName">github</Item>
<Item Key="authorization_endpoint">https://github.com/login/oauth/authorize</Item>
<Item Key="AccessTokenEndpoint">https://github.com/login/oauth/access_token?</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="ClaimsEndpoint">https://api.github.com/user</Item>
<Item Key="client_id">My Client Id</Item>
<Item Key="UsePolicyInRedirectUri">0</Item>
<Item Key="scope">user</Item>
<Item Key="response_types">code</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_GitHubSecret" />
</CryptographicKeys>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="id" />
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="github.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
<OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
<OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
문제가 access_token과는 JSON으로 반환되지 않는다는 점이다 궁금? 나는 우편 배달부의 단계 자신의 모든 통해 강화, 그리고 코드는 URL 매개 변수로 반환하고, access_token은이 같은 응답의 본문에 반환되었습니다 :
access_token=<snip>&scope=user%3Aemail&token_type=bearer
내가있는 메타 데이터 항목을 잃었 이 응답을 지원하는 사용자 정의 공급자? 아니면 Azure AD B2C에서 작동하지 않습니까?
Chris, 응답 해 주셔서 감사합니다! 나는 클레임 응답이 GitHub에서 돌아오고 있지만 ValidateApiResponseHandler 단계에서 내부 서버 오류가 발생한다는 것을 App 통찰력에서 볼 수 있습니다 (오류를 반환하기 전에 NoOpHandler로갑니다) : "A self-asserted send '내부 서버 오류'라는 이유로 응답이 실패했습니다. " UserAgentForClaimsExchange 필드에 원래 정책 이름을 넣습니다. CPIM-Basic//B2C_1A_signup_signin. 그게 올바른 방침입니까? –
UserAgentForClaimsExchange는 무엇을 의미합니까? –
{tenant} 또는 {policy} 토큰을 대체하지 마십시오. Azure AD B2C 엔진이 그들을 대체 할 것입니다. –