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

Azure active directory 从ADB2C中的自定义策略返回简单字符串声明,azure-active-directory,azure-ad-b2c,claims-based-identity,policies,Azure Active Directory,Azure Ad B2c,Claims Based Identity,Policies,我接着介绍了如何使用Active Directory B2C实现自定义策略。一切都很正常,我唯一关心的是自定义声明会像序列化对象一样返回。让我解释清楚一点。我成功创建了Azure函数,该函数返回自定义声明。编码后的JWT如下所示(请关注“userPermissions”值): { “exp”:1594560277, “nbf”:1594556677, “版本”:“1.0”, “授权时间”:1594556677, “userPermissions”:“{\r\n\“permissions\”:\“

我接着介绍了如何使用Active Directory B2C实现自定义策略。一切都很正常,我唯一关心的是自定义声明会像序列化对象一样返回。让我解释清楚一点。我成功创建了Azure函数,该函数返回自定义声明。编码后的JWT如下所示(请关注“userPermissions”值):

{
“exp”:1594560277,
“nbf”:1594556677,
“版本”:“1.0”,
“授权时间”:1594556677,
“userPermissions”:“{\r\n\“permissions\”:\“test1\”\r\n}”
使用Microsoft.AspNetCore.Mvc;
[HttpGet]
公共异步任务组(字符串objectId)
{ 
字符串userPermissions=“test1”;
//!!!!!!!这就是诀窍如果我发送了纯json,我就得到了错误
JsonResult o=新的JsonResult(
新的
{
用户权限;
});
返回o;
}  
使用Microsoft.AspNetCore.Mvc;
[HttpGet]
公共异步任务组(字符串objectId)
{ 
字符串userPermissions=“test1”;
//!!!!!!!这就是诀窍如果我发送了纯json,我就得到了错误
JsonResult o=新的JsonResult(
新的
{
用户权限;
});
返回o;
}  

您可以共享API响应B2C的确切JSON负载吗?是的,这是负载:{“exp”:1594585690,“nbf”:1594582090,“ver”:“1.0”,“iss”:“sub”:“39503f-452c-987c-354bc32409ab”,“aud”:“240294b2ee1-81f3-720cba6a5afd”,“acr”:“B2C_1a_pp_注册”,“nonce”:“240294b2-a4df-81f3-987c-720CBA5AFD”,“iat”:1594582090,“授权时间”:1594582090,“名称”:“xxxxxx”,“给定名称”:“YYYYY”,“家族名称”:“zzzzzzz”,“用户权限”:“{\r\n\”“权限\:\”:“prova1,prova2\”,\r\n\“appType\”:“pp\”,\r\n}”,“tid:“240294b2ee1-81f3-720cba6a5afd”B2C无法反序列化您发送回的JSON中的声明,JSON中的每个键值对都被视为字符串、字符串集合或布尔值。您必须在API中反序列化字符串,或者返回一个没有转义字符的正确嵌套JSON对象。您能共享API响应B2C的确切JSON负载吗?是的,这是paylo广告:{“exp”:1594585690,“nbf”:1594582090,“版本”:“1.0”,“iss”:“sub”:“39503f-452c-987c-354BC3409AB”,“aud”:“240294b2ee1-81f3-720cba6a5afd”,“acr”:“b2c_1a_pp_签名”,“nonce”:“240294b2-a4df-81f3-987c-720cba6a5afd”,“iat”:1594582090,“认证时间”:1594582090,“姓名”:“xxxxxx”,“YYY”,“家族名称”:“zzzzzzz”,“用户权限”:“{\r\n\”权限\“:\”prova1,prova2 \“,\r\n\”应用类型\“:”pp \“,\r\n}”,“tid”:“240294b2ee1-81f3-720cba6a5afd”}B2C无法反序列化您发送回的JSON中的声明,JSON中的每个键值对都被视为字符串、字符串集合或布尔值。您必须在API中反序列化字符串,或者返回一个没有转义字符的正确嵌套JSON对象。
{
  "exp": 1594560277,
  "nbf": 1594556677,
  "ver": "1.0",
  "auth_time": 1594556677,
  "userPermissions": "{\r\n \"permissions\":\"test1\"\r\n}" <============= HERE
}
{
  "exp": 1594560277,
  "nbf": 1594556677,
  "ver": "1.0",
  "auth_time": 1594556677,
  "userPermissions": "test1" <============ HERE
}
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;
}