Не удалось завершить автоматический вход Azure B2C ADFS - PullRequest
0 голосов
/ 11 января 2019

Есть проблема с политиками B2C и входом в AD.

У меня есть две политики входа, обе связаны с отдельной AD. Политики входа работают с протоколом SAML2, подключаются к AD через OIDC.

AD технический профиль выглядит так:

        <ClaimsProvider>
        <Domain>microsoftonline.com</Domain>
        <DisplayName>Login using ADFS</DisplayName>
        <TechnicalProfiles>
            <TechnicalProfile Id="Microsoft-OpenID">
                <DisplayName>Microsoft ADFS</DisplayName>
                <Description>Login with your ADFS account</Description>
                <Protocol Name="OpenIdConnect" />
                <OutputTokenFormat>JWT</OutputTokenFormat>
                <Metadata>
                    <Item Key="METADATA">https://login.microsoftonline.com/adfstenant.onmicrosoft.com/.well-known/openid-configuration</Item>
                    <Item Key="client_id">000000-00000-0000-0000-0000000000</Item>
                    <Item Key="ValidTokenIssuerPrefixes">https://sts.windows.net/000000-000-000-0000-000000</Item>
                    <Item Key="scope">openid</Item>
                    <Item Key="response_mode">form_post</Item>
                    <Item Key="response_types">id_token</Item>
                    <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
                    <Item Key="UsePolicyInRedirectUri">false</Item>
                </Metadata>
                <CryptographicKeys>
                    <Key Id="client_secret" StorageReferenceId="B2C_1A_ADFSSecret" />
                </CryptographicKeys>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="oid" />
                    <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
                    <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="unique_name" />
                    <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="ADFS" />
                    <OutputClaim ClaimTypeReferenceId="authenticationSource" PartnerClaimType="iss" />
                    <OutputClaim ClaimTypeReferenceId="sub" PartnerClaimType="oid" />
                </OutputClaims>
                <OutputClaimsTransformations>
                    <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
                    <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
                    <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
                </OutputClaimsTransformations>
                <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
            </TechnicalProfile>
        </TechnicalProfiles>
    </ClaimsProvider>

У меня следующее поведение:

  1. Вход в ADFS с использованием настраиваемой политики B2C 1;
  2. После этого входа в систему с использованием настраиваемой политики B2C 2, вход выполняется автоматически, поскольку я уже вошел в AD;
  3. Выполнение глобального выхода из политики 1 или 2.

В результате запрос на выход из AD был отменен, политика B2C возвращает SAMLRequest вместо SAMLResponse моей конечной точке SingleLogout.

Одиночный выход из системы возвращает SAMLResponse политике, и исключение происходит на стороне политики.

Похоже, что выход из B2C завершен, если я пытаюсь отправить запрос на вход, отображается страница входа.

Более того, если я снова войду, используя кнопку входа ADFS на этой странице, я смогу успешно выйти из системы.

У меня есть два вопроса:

  1. Почему запрос на выход из AD "https://login.microsoftonline.com/tenant/oauth2/logout" имеет отмененный статус
  2. Почему политика B2C возвращает SAML LogoutRequest моему приложению вместо ответа SAML Logout в этом случае.
...