从ADB2C中的自定义策略返回简单的字符串声明

时间:2020-07-12 16:46:27

标签: azure-active-directory azure-ad-b2c claims-based-identity policies

我跟随this article,在其中解释了如何使用Active Directory B2C实施自定义策略。一切工作正常,我唯一关心的是自定义声明像序列化对象一样返回。让我更好地解释一下。我成功创建了返回自定义声明的Azure函数。编码后的JWT如下所示(请注意“ userPermissions ”值):

{
  "exp": 1594560277,
  "nbf": 1594556677,
  "ver": "1.0",
  "auth_time": 1594556677,
  "userPermissions": "{\r\n \"permissions\":\"test1\"\r\n}" <============= HERE
}

如您所见,“ userPermissions ”声明是“序列化JSON”。我想拥有一个如下的JWT:

{
  "exp": 1594560277,
  "nbf": 1594556677,
  "ver": "1.0",
  "auth_time": 1594556677,
  "userPermissions": "test1" <============ HERE
}

如您所见,“ test1”是一个简单的字符串。您可能会认为:拜访BrianEnno!这非常简单,您的Azure函数应该返回“字符串”,而不是返回“序列化JSON”。好吧,如果我尝试返回一个(格式正确的)字符串,则会收到此错误:

ServerError:AADB2C90261:在步骤“ 4”中指定的声明交换“ GetPermissions”返回了无法解析的HTTP错误响应。

有没有办法让它工作?

1 个答案:

答案 0 :(得分:0)

using Microsoft.AspNetCore.Mvc;
[HttpGet]
        public async Task<JsonResult> Groups(string objectId)
        { 
            string userPermissions = "test1";
            
            //!!!!!This is the trick if I sent plain json I got the error
            
            JsonResult o = new JsonResult(
                new
                {
                    userPermissions;
                });

            return o;
}