首页 > 解决方案 > 分配加密密钥值以在 azure ad b2c 中声明

问题描述

我有一个技术配置文件,可以从 AD 令牌端点检索客户端凭据流访问令牌。

我可以将响应 access_token 分配给声明并通过输出声明传递给 UI(一旦加载,我将隐藏元素并将元素 tpe 更改为隐藏),JS 将使用它在注册页面中进行某些 api 调用。

一切正常。在 rest api 的技术配置文件中,我直接在声明的默认值中使用了客户端 ID 和客户端机密值。

是否可以从作为加密密钥的密钥存储中获取秘密并分配声明?

下面是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>

标签: azure-active-directoryazure-ad-b2c

解决方案


对于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>

推荐阅读