IdentityServer4从API项目更新声明值

时间:2018-09-05 01:48:43

标签: .net-core identityserver4

我有一个非常简单的问题,如果您能提供解决方案,我将不胜感激。

我有两个项目:

  • 一个IdentityServer4项目。
  • 一个API项目。

使用IdentityServer4对API项目进行保护,如下所示:

services.AddAuthentication("Bearer")
    .AddIdentityServerAuthentication(options =>
    {
        options.Authority = "http://localhost:5000";
        options.RequireHttpsMetadata = false;

        options.ApiName = "TestAPI";
        options.ApiSecret = "Password"
    });

到目前为止,一切正常。

我的问题是来自API项目,我如何在IdentityServer4上进行更新操作,例如更新用户声明值?

1 个答案:

答案 0 :(得分:0)

如果我对您的问题的理解正确无误-您想在已发出声明的IDS保护的API内更改声明。

通常-这是不可能的,也不正确。

为什么不能?

vendor\bin\phpunit packages\yourname\package-name类及其ClaimsPrincipal属性是只读的(它只有getter,而没有setter):

Claims

为什么不正确?

通常,声明中包含一些身份验证信息(角色,用户名,一些用户个人资料信息等)。此数据应由public virtual IEnumerable<Claim> Claims { get; } (在您的情况下为IDS)发布,并且不应由授权取决于此身份验证数据的某人/某物更改。

PS:出于好奇-您到底想更改哪些主张,或者这只是一个普遍的问题?