Identityserver4 使用带有AddLocalApiAuthentication的自定义端点添加声明

Identityserver4 使用带有AddLocalApiAuthentication的自定义端点添加声明,identityserver4,Identityserver4,我正在尝试使用一个自定义端点,该端点根据传递给LocalApicController的参数添加特定声明 我在以下网址获得帮助: http://docs.identityserver.io/en/latest/topics/add_apis.html 我配置了startup.cs: services.AddLocalApiAuthentication(principal => { principal.Identities.First().AddClaim(n

我正在尝试使用一个自定义端点,该端点根据传递给LocalApicController的参数添加特定声明

我在以下网址获得帮助:

http://docs.identityserver.io/en/latest/topics/add_apis.html
我配置了
startup.cs

    services.AddLocalApiAuthentication(principal =>
    {
        principal.Identities.First().AddClaim(new Claim("additional_claim", "additional_value"));

        return Task.FromResult(principal);
    });

和我的接收
控制器

    [Route("localApi")]
    [Authorize(LocalApi.PolicyName)]
    public class LocalApiController : ControllerBase
    {
        public IActionResult Get()
        {
            var claims = from c in User.Claims select new { c.Type, c.Value };
            return new JsonResult(claims);
        }
    }
[Authorize(LocalApi.PolicyName)]
工作并激发在
startup.cs
中配置的助手,该助手在控制器
get
方法之前逻辑激发

我不知道如何将控制器的
{id}
参数传递给helper方法(这将成为我要添加的声明的值,替换
的“附加值”
常量)


有什么建议吗?

这听起来很像工作原理。看看免费的开源PolicyServer,尤其是添加声明的地方。本地版本从获取声明,但您可以用对端点的调用来替换。谢谢Ruard,没有“看到”它。。。这样如何:您能解释一下为什么示例使用:.AddClaim(新声明(“附加声明”、“附加值”)),在这里添加常量对我来说没有意义,添加变量则没有意义。所有的例子都非常完整,让我觉得我遗漏了一些东西……为什么你需要索赔转换?这不是关于添加新的声明,而是关于应用规则。例如,当外部机构(如谷歌、微软等)使用不同的索赔类型时。或者必须根据其他索赔/信息确定索赔。因此,当您想要添加声明时,声明转换可能不是您想要的。也许您应该扩展配置、扩展ProfileService或使用外部(或本地)源,如PolicyServer,它实际上添加了来自另一个源(json配置或您配置的任何源)的声明和动态策略。啊哈,作业的工具不对。。。我的目标是在用户经过身份验证后添加声明,随后我了解到该用户的一些信息,提示我返回STS添加声明并将其包含在令牌中……为什么不将声明添加到控制器的响应中?