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

Azure AD B2C自定义注册策略中Azure Function安全认证方案咨询

Azure AD B2C自定义注册策略中Azure Function的身份认证方案

针对你在注册流程中调用Azure Function检查域名注册状态、同时避免匿名访问的需求,以下是几种可行的认证方案:

方案一:用Azure AD保护Azure Function,通过B2C获取访问令牌调用

  1. 在你的Azure AD B2C租户中注册一个后端应用(不要设置为公共客户端),记录其Application ID和Directory ID。
  2. 配置Azure Function的身份认证:
    • 启用"Azure Active Directory"作为身份提供者,选择"高级"模式。
    • 填入刚才注册的后端应用的客户端ID和租户ID,设置允许的受众为该后端应用的Application ID URI(可自定义,比如api://your-function-audience)。
  3. 在B2C自定义策略中添加一个OAuth2技术配置文件,用于获取访问令牌:
    • 指定颁发者为B2C租户的token端点,客户端ID为刚才注册的后端应用ID,客户端密钥存储在B2C密钥容器中。
    • 设置scope为后端应用的Application ID URI加上.default(比如api://your-function-audience/.default)。
  4. 在调用Function的REST技术配置文件中,将获取到的访问令牌放入Authorization头,格式为Bearer {access-token}。
  5. Function内部验证令牌:检查令牌的aud(受众)是否匹配配置的URI,iss(颁发者)是否为你的B2C租户,同时验证签名和过期时间。

方案二:使用Azure Function密钥(API密钥)认证

  1. 在Azure Function的"密钥"页面生成一个函数级或主机级密钥,记录该密钥。
  2. 在B2C的"身份体验框架"->"密钥容器"中添加一个密钥,将Function密钥存储为字符串类型,命名为FunctionDomainCheckKey。
  3. 在调用Function的REST技术配置文件中,添加HTTP请求头:
    <Header Name="x-functions-key" Value="{Settings:FunctionDomainCheckKey}" />
    
  4. Function内部会自动验证这个密钥的有效性,只有携带正确密钥的请求才能访问。

注意:密钥需要定期轮换,且绝对不能明文写在策略文件中,必须通过B2C密钥容器引用。

方案三:由B2C生成签名JWT,Function验证该令牌

  1. 在B2C密钥容器中生成一个RSA或HMAC密钥,用于签名JWT。
  2. 在自定义策略中,添加一个ClaimsTransformation生成包含必要声明的JWT,比如:
    • iss:你的B2C租户ID
    • aud:你的Function的URL或自定义标识符
    • exp:过期时间(建议短时效,比如5分钟)
    • 自定义声明:比如要检查的域名、操作类型(如domain_check)
  3. 调用Function时,将这个JWT放入Authorization头,格式为Bearer {generated-jwt}。
  4. Function内部通过B2C的公钥(可从B2C的元数据端点获取)验证JWT的签名、过期时间、受众和声明,确保请求来自合法的B2C注册流程。

关键注意事项

  • 无论采用哪种方案,Function内部都要额外校验请求的合法性:比如只允许POST请求、只处理域名检查的特定操作,避免被滥用。
  • 令牌/密钥的传输必须使用HTTPS,防止被拦截。
  • 对于方案一和三,令牌验证要严格,不要跳过任何校验步骤(如签名、过期时间、受众)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:31:15