Как включить конфигурацию PKCE для пользовательских политик

#azure-ad-b2c

Вопрос:

Когда мы тестируем потоки пользователей в веб-приложениях с поддержкой PKCE, мы получаем раскрывающийся список для настройки PKCE. Но мы не получаем этого, когда пытаемся протестировать пользовательские политики. Можем ли мы что-то сделать, чтобы включить эту конфигурацию PKCE?

Ответ №1:

Я не уверен в раскрывающемся списке, который вы упомянули здесь специально для PKCE. Было бы здорово, если бы вы могли поделиться скриншотом этого для справки. Но что касается использования PKCE, поскольку PKCE также является частью потоков OAuth2.0, следовательно, настройка в пользовательских политиках будет такой же, как у любого из поставщиков утверждений в социальных сетях/Поставщиков удостоверений личности. Для получения дополнительной информации вы можете обратиться к настройке поставщика претензий Facebook в нашей политике учетной записи Socialandlocal из начального пакета.

Для справки: Совместное использование выписки для поставщика претензий Github:

 <ClaimsProvider>
  <Domain>github.com</Domain>
  <DisplayName>GitHub</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="GitHub-OAuth2">
          <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="ClaimsEndpoint">https://api.github.com/user</Item>
            <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
            <Item Key="scope">user</Item>
            <Item Key="HttpBinding">GET</Item>
            <Item Key="UserAgentForClaimsExchange">CPIM-Basic/{tenant}/{policy}</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">xxxxxxxxxxxxxxxxxx</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_GithubSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="numericUserId" PartnerClaimType="id" />
            <!-- <OutputClaim ClaimTypeReferenceId="UserId" /> -->
            <OutputClaim ClaimTypeReferenceId="issuerUserId" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="github.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateIssuerUserId" />
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
    </TechnicalProfile>   
  </TechnicalProfiles>    
</ClaimsProvider> 
 

Если вы проверите этот пример , вы обнаружите, что есть элемент под названием <Protocol Name="OAuth2" /> , это включает поддержку протокола OAuth2.0 для этого поставщика утверждений.