azure-active-directory - 分配加密密钥值以在 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>
解决方案
对于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>
推荐阅读
- python - dask 和 pandas 数据帧中的嵌套 numpy 数组
- reactjs - 使用 Hooks 的 React 树视图应用程序(即 useCallback)
- c# - 如何控制变量的最大值?
- c++ - opengl 3.3中的黑屏输出
- data-structures - 我在练习树的问题,我不明白为什么第二个图是树,节点4不是有两个父节点吗?
- flutter - 如何在 Flutter Cupertino 底部导航栏中导航到同级项目
- gis - 如何在导入 mod 流时为河流单元格的网格点插入高程?
- javascript - 用于大量数字数据输入的 HTML 表单
- c# - 使用 Controller 将数据输入 mvc 网格
- php - 如何使用正则表达式从一组复杂的字符串中提取此文本?