Присвоить значение криптографического ключа заявке в azure ad b2c

#azure-active-directory #azure-ad-b2c

#azure-active-directory #azure-ad-b2c

Вопрос:

У меня есть технический профиль для извлечения токена доступа к потоку учетных данных клиента из конечной точки токена AD.

Я могу присвоить ответ access_token заявке и передать в пользовательский интерфейс через выходное утверждение (после его загрузки я скрою элемент и изменю tpe элемента на скрытый), который будет использоваться JS для выполнения определенных вызовов api на странице регистрации.

Все работает нормально. Здесь, в техническом профиле rest api, я использовал значения идентификатора клиента и секретности клиента непосредственно в значении заявки по умолчанию.

Возможно ли получить секрет из хранилища ключей, то есть криптографические ключи, и присвоить утверждение?

Ниже приведен технический профиль rest API,

 <TechnicalProfile Id="TokenAPI">
  <DisplayName>Rest API call</DisplayName>
  <Protocol
    Name="Proprietary"
    Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
  />
  <Metadata>
    <Item Key="ServiceUrl"
      >https://login.microsoftonline.com/tenant.onmicrosoft.com/oauth2/v2.0/token</Item
    >
    <Item Key="AuthenticationType">None</Item>
    <Item Key="SendClaimsIn">Form</Item>
    <Item Key="HttpBinding">POST</Item>
    <Item Key="AllowInsecureAuthInProduction">true</Item>
  </Metadata>
  <InputClaims>
    <InputClaim
      ClaimTypeReferenceId="client_id"
      PartnerClaimType="client_id"
      DefaultValue="abd2c507-xxxx-xxxx-xxxx-xxxx"
    />
    <InputClaim
      ClaimTypeReferenceId="client_secret"
      PartnerClaimType="client_secret"
      DefaultValue="LXz2L5xxxxxxxxxxxxxxxxxxxxxxxx"
    />

    <InputClaim
      ClaimTypeReferenceId="grant_type"
      PartnerClaimType="grant_type"
      DefaultValue="client_credentials"
    />
    <InputClaim
      ClaimTypeReferenceId="scope"
      PartnerClaimType="scope"
      DefaultValue="https://TitanB2CTest.onmicrosoft.com/507-xxxx-xxxx-xxxx-xxxx/.default"
    />
  </InputClaims>
  <OutputClaims>
    <OutputClaim
      ClaimTypeReferenceId="access_token"
      PartnerClaimType="access_token"
    />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
  

Ответ №1:

Для технического профиля TokenAPI можно задать значение AuthenticationType Basic , а затем добавить <CryptographicKeys /> элемент, чтобы идентификатор клиента и секрет отправлялись в Authorization: Basic xxx заголовке конечной точке токена:

 <TechnicalProfile Id="TokenAPI">
  <DisplayName>Rest API call</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/tenant.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
    <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_MyClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_MyClientSecret" />
  </CryptographicKeys>
  ...
</TechnicalProfile>
  

Комментарии:

1. Работает ли базовая аутентификация также для конечной точки токена ROPC B2C?