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

能否用Azure Function通过API Connector为Azure AD B2C令牌添加额外声明?

可以将Azure Function作为Azure B2C API Connector的后端,无需改用普通API

你遇到的认证适配问题可以通过两种方案解决,让Azure Function兼容API Connector的Basic或证书认证要求:

方案一:将Function访问密钥适配为Basic认证

API Connector的Basic认证会自动生成Authorization: Basic <base64(用户名:密码)>请求头,我们可以利用这一点验证Function的访问密钥:

  1. 在API Connector中配置Basic认证:

    • 用户名可设置为任意字符串(比如azureb2c-connector)
    • 密码直接填写Azure Function的访问密钥(比如默认的_function_key值)
  2. 在Azure Function中验证Basic头里的密钥:
    在Function代码中解析Authorization头,提取密码部分并与Function密钥对比。以下是C#示例:

    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        // 获取Authorization头
        if (!req.Headers.TryGetValue("Authorization", out var authHeader))
        {
            return new UnauthorizedResult();
        }
    
        // 解码Basic认证内容
        var authValue = authHeader.ToString().Replace("Basic ", string.Empty);
        var decodedCreds = Encoding.UTF8.GetString(Convert.FromBase64String(authValue));
        var credParts = decodedCreds.Split(':');
        
        if (credParts.Length != 2)
        {
            return new UnauthorizedResult();
        }
    
        // 验证密码是否匹配Function密钥
        var validFunctionKey = Environment.GetEnvironmentVariable("FUNCTION_KEY");
        if (!string.Equals(credParts[1], validFunctionKey, StringComparison.Ordinal))
        {
            return new UnauthorizedResult();
        }
    
        // 生成额外声明并返回
        return new OkObjectResult(new 
        { 
            claims = new 
            { 
                custom_user_role = "premium_user",
                user_profile_id = "123456"
            } 
        });
    }
    

    注意:将FUNCTION_KEY作为环境变量存储在Function应用的配置中,避免硬编码密钥。

方案二:为Azure Function配置证书认证

如果更倾向于证书认证方式,可按以下步骤操作:

  • 为Azure Function配置自定义域名,并绑定有效的SSL证书(可从Azure Key Vault获取)
  • 在API Connector中选择证书认证,上传对应的客户端证书
  • 在Azure Function的应用服务设置中,启用"要求传入证书"选项,验证请求中的证书有效性

关键说明

  • 无需改用普通API,Azure Function完全满足API Connector的调用要求,只需适配认证逻辑即可
  • 无论哪种方案,Function返回的响应都需符合B2C API Connector的格式:包含claims对象,其中的键值对会被自动添加到令牌中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:35:25