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

如何通过API连接器与ASP.NET Core Web API为Azure B2C令牌添加自定义声明

问题1:JsonElement body为空,ValueKind为Undefined的排查方案
  • 首先检查用户流的API连接器声明配置:进入你的B2C_1_singupsingin1用户流配置页,找到「API连接器」板块,点开你绑定的连接器配置,在要发送到API的声明区域,勾选所有你需要接收的内置属性、自定义属性,未勾选的属性不会被B2C发送到你的接口,是最常见的空body原因。
  • 检查接口的内容类型绑定:给你的Enrich接口添加[Consumes("application/json")]特性,确保ASP.NET Core正确识别B2C发送的JSON格式请求,完成模型绑定,避免绑定失败导致body为默认的Undefined值。
  • 排查请求体原始内容:可以在接口中添加原始请求体读取逻辑,确认B2C是否真的没有发送内容,示例代码如下:
[HttpPost("enrich")]
[Consumes("application/json")]
public IActionResult Enrich([FromBody] JsonElement body)
{
    if (body.ValueKind == JsonValueKind.Undefined)
    {
        Request.Body.Position = 0;
        using var reader = new StreamReader(Request.Body);
        var rawRequestBody = reader.ReadToEnd();
        // 此处可输出rawRequestBody日志,确认请求实际携带内容
    }

    var responseProperties = new Dictionary<string, object>
    {
        { "version", "1.0.0" },
        { "action", "Continue" },
        { "postalCode", "12349" },
        { "userId", 123 } 
    };

    return new JsonResult(responseProperties) { StatusCode = 200 };
}
问题2:将自有数据库的userId添加到令牌的实现说明

你现有代码的基础逻辑是可行的,只要补充以下配置即可完成需求:

  1. 首先在Azure B2C租户的「用户属性」页面,创建和你返回字段名一致的自定义属性userId,属性类型和你返回的值类型匹配(示例中为数字,可选整数类型)。
  2. 回到B2C_1_singupsingin1用户流配置页,进入应用声明板块,找到你刚创建的userId属性并勾选,B2C只会将勾选的应用声明放入最终签发的令牌中。
  3. 保持返回的响应为200状态码,action值为Continue即可,B2C会自动将你返回的合法属性纳入用户声明池,最终带到令牌里。

内容的提问来源于stack exchange,提问作者Александр Климук

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:05