You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure AD B2C自定义IEF策略中访问Azure Key Vault密钥

在Azure AD B2C自定义IEF策略中从Key Vault取API密钥并传入请求头

先搞懂Cryptography标签的用途

Cryptography标签下的密钥是用来做加密/解密、签名/验签的——比如给JWT令牌签名、加密用户敏感数据这种场景,不是用来存要传给API的订阅密钥的,所以你之前用这个标签完全错方向了。

正确的实现步骤

1. 先在B2C里配置Key Vault连接

  • 给B2C租户的服务主体开Key Vault的Get权限(看你存的是密钥还是机密,对应开相应权限)
  • 去B2C门户的策略密钥页面,创建一个「存储在Key Vault的机密」类型的密钥,关联你Key Vault里的API订阅密钥。这里一定要选「机密」类型,别选加密密钥。

2. 在自定义策略里引用密钥并塞进API请求头

在你调用API的技术配置文件(就是RestfulProvider类型的那个)里,用Header元素把密钥传进去就行:

<TechnicalProfile Id="YourApiCallProfile">
  <DisplayName>调用目标API</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://你的API地址/接口路径</Item>
    <Item Key="SendClaimsIn">Headers</Item>
  </Metadata>
  <HeaderParameters>
    <!-- 这里引用策略密钥作为请求头 -->
    <HeaderParameter Name="Subscription-Key" DefaultValue="{Settings:你创建的策略密钥名称}" />
  </HeaderParameters>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

注意:{Settings:你创建的策略密钥名称}里的名称,就是你在B2C策略密钥里新建的那个密钥的名字。

3. 验证配置

跑一遍自定义策略的流程,抓包看看API请求的头,确认Subscription-Key(或者你API要求的头名称)是不是已经带上了Key Vault里的密钥值。

容易踩的坑

  • 别忘给B2C的服务主体配Key Vault的权限,不然会拿不到密钥
  • 策略密钥类型必须是「存储在Key Vault的机密」,加密密钥是给Cryptography标签用的,别搞混
  • 要和API要求的请求头名称对应上,有的API要求的是Api-Key不是Subscription-Key

内容的提问来源于stack exchange,提问作者Rishi Parpyani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:05:15