Многопользовательская Azure AD в Azure AD B2C

Я следил за ответом здесь: мультитенантная аутентификация Azure AD в Azure AD B2C с настраиваемыми политиками

И прохождение здесь: https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/blob/0129fc013ae5e66a3ee0046a5d0db2e8120d8f8e/Walkthroughs/IdP-AzureAD.md

Но я не смог войти, сообщение об ошибке что-то вроде строки:

AADB2C: An exception has occured. Correlation ID: <GUID>. Timestamp: <Time>

Кроме того, при просмотре пошагового руководства в последнем мастере вся страница была удалена и теперь содержит только ссылку на https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom, который не показывает, как настроить ClaimsProvider для многопользовательского IDP Azure AD.

Сообщение об ошибке не было супер полезно, и я заблудился.

Мой технический профиль выглядит следующим образом:

<ClaimsProvider>
    <Domain>AzureAD</Domain>
    <DisplayName>Login using Azure AD</DisplayName>
    <TechnicalProfiles>
        <TechnicalProfile Id="AzureADProfile">
            <DisplayName>Azure AD</DisplayName>
            <Description>Login with your Azure AD account</Description>
            <Protocol Name="OpenIdConnect"/>
            <OutputTokenFormat>JWT</OutputTokenFormat>
            <Metadata>
                <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
                <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item>
                <Item Key="authorization_endpoint">https://login.windows.net/common/oauth2/v2.0/authorize</Item>
                <Item Key="client_id">MyAzureADB2CAppId</Item>
                <Item Key="IdTokenAudience">MyAzureADB2CAppId</Item>
                <Item Key="response_types">id_token</Item>
                <Item Key="UsePolicyInRedirectUri">false</Item>
                <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
                <Item Key="scope">openid</Item>
                <Item Key="HttpBinding">POST</Item>
            </Metadata>
            <CryptographicKeys>
                <Key Id="client_secret" StorageReferenceId="B2C_1A_B2CSecret"/>
            </CryptographicKeys>
            <OutputClaims>
                <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="oid"/>
                <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
                <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="unique_name" />
                <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
                <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
                <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
                <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="azureADAuthentication" />
                <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="AzureAD" />
            </OutputClaims>
            <OutputClaimsTransformations>
                <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
                <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
                <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
                <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
            </OutputClaimsTransformations>
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop"/>
        </TechnicalProfile>
    </TechnicalProfiles>
</ClaimsProvider>

РЕДАКТИРОВАТЬ: После введения User Journey Recorder в соответствии с предложением spottedhahn, мне удалось получить настоящую ошибку:

The response received from the ClaimsProvider using TechnicalProfile 
"<My_Azure_AD_Common_Profile>" in policy "<My_RP_Policy>" of tenant 
"<My_B2C_Tenant>" did not contain an "id_token".

Вопрос в том, поддерживается ли связывание мультитенантного Azure AD с Azure AD B2C, и как я могу настроить его для работы?

1 ответ

Решение

При интеграции Azure AD B2C с общей конечной точкой Azure AD вы можете интегрироваться с:

  • Конечная точка v1.0: https://login.microsoftonline.com/common/oauth2/authorize
  • Конечная точка v2.0: https://login.microsoftonline.com/common/oauth2/v2.0/authorize

конечная точка v1.0

Чтобы интегрировать Azure AD B2C с конечной точкой v1.0, необходимо зарегистрировать Azure AD B2C через портал Azure с вашим клиентом Azure AD:

  1. Войдите на портал Azure.
  2. В верхней панели выберите каталог Azure AD.
  3. В левой панели выберите Все услуги и найдите "Регистрация приложений".
  4. Выберите Регистрация нового приложения.
  5. В поле Имя введите имя приложения, например "Azure AD B2C".
  6. В Тип приложения выберите Веб-приложение / API.
  7. В URL для входа введите https://login.microsoftonline.com/te/<tenant>/oauth2/authrespгде вы заменяете <tenant> с именем вашего клиента Azure AD B2C (например, "contosob2c.onmicrosoft.com").
  8. Выберите Создать.
  9. Скопируйте идентификатор приложения на потом.
  10. Выберите Настройки, а затем выберите Ключи.
  11. В разделе " Пароли " введите описание пароля, выберите длительность пароля, выберите " Сохранить", а затем скопируйте значение пароля для дальнейшего использования.

Затем необходимо создать ключ политики (например, "AzureADClientSecret") через портал Azure AD B2C с секретом приложения из шага 11.

Затем необходимо обновить технический профиль Azure AD, установив следующие параметры:

<TechnicalProfile Id="AzureADAccountProfile">
  <DisplayName>Log in with your work account</DisplayName>
  <Protocol Name="OpenIdConnect"/>
  <OutputTokenFormat>JWT</OutputTokenFormat>
  <Metadata>
    <Item Key="authorization_endpoint">https://login.microsoftonline.com/common/oauth2/authorize</Item>
    <Item Key="client_id"><!-- Enter the application ID from step 9 --></Item>
    <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
    <Item Key="HttpBinding">POST</Item>
    <Item Key="IdTokenAudience"><!-- Enter the application ID from step 9 --></Item>
    <Item Key="response_types">id_token</Item>
    <Item Key="scope">openid</Item>
    <Item Key="UsePolicyInRedirectUri">false</Item>
    <Item Key="ValidTokenIssuerPrefixes">https://sts.windows.net/</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="client_secret" StorageReferenceId="B2C_1A_AzureADClientSecret"/>
  </CryptographicKeys>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="enterpriseAuthentication" />
    <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
    <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="tid" />
    <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="oid" />
    ...
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
    <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
    <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="ReferenceId="SM-Noop" />
</TechnicalProfile>

Конечная точка v2.0

Чтобы интегрировать Azure AD B2C с конечной точкой v2.0, необходимо зарегистрировать Azure AD B2C через портал регистрации приложений с вашим клиентом Azure AD:

  1. Войдите на портал регистрации приложений.
  2. Выберите Добавить приложение.
  3. В поле Имя приложения введите имя приложения, например "Azure AD B2C", а затем выберите " Создать".
  4. Скопируйте идентификатор приложения на потом.
  5. В разделе " Секреты приложения" выберите " Создать новый пароль", а затем скопируйте значение пароля для дальнейшего использования.
  6. В разделе " Платформы " выберите " Добавить платформу", выберите " Интернет" и введите URL-адрес перенаправления как https://login.microsoftonline.com/te/<tenant>/oauth2/authrespгде вы заменяете <tenant> с именем вашего клиента Azure AD B2C (например, "contosob2c.onmicrosoft.com").
  7. В нижней панели выберите Сохранить.

Затем необходимо создать ключ политики (например, "AzureADClientSecret") через портал Azure AD B2C с секретом приложения из шага 5.

Затем необходимо обновить технический профиль Azure AD, установив следующие параметры:

<TechnicalProfile Id="AzureADAccountProfile">
  <DisplayName>Log in with your work account</DisplayName>
  <Protocol Name="OpenIdConnect"/>
  <OutputTokenFormat>JWT</OutputTokenFormat>
  <Metadata>
    <Item Key="authorization_endpoint">https://login.microsoftonline.com/common/oauth2/v2.0/authorize</Item>
    <Item Key="client_id"><!-- Enter the application ID from step 4 --></Item>
    <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
    <Item Key="HttpBinding">POST</Item>
    <Item Key="IdTokenAudience"><!-- Enter the application ID from step 4 --></Item>
    <Item Key="response_types">id_token</Item>
    <Item Key="scope">openid profile</Item>
    <Item Key="UsePolicyInRedirectUri">false</Item>
    <Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="client_secret" StorageReferenceId="B2C_1A_AzureADClientSecret"/>
  </CryptographicKeys>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="enterpriseAuthentication" />
    <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
    <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="tid" />
    <OutputClaim ClaimTypeReferenceId="socialIdpUserId" PartnerClaimType="oid" />
    ...
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
    <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
    <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="ReferenceId="SM-Noop" />
</TechnicalProfile>
Другие вопросы по тегам