我跟随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错误响应。
有没有办法让它工作?
答案 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;
}