#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?