.net core IdentityServer4从API项目更新索赔值

.net core IdentityServer4从API项目更新索赔值,.net-core,identityserver4,.net Core,Identityserver4,我有一个非常简单的问题,如果您能提供解决方案,我将不胜感激 我有两个项目: IdentityServer4项目 API项目 API项目正在使用IdentityServer 4进行保护,如下所示: services.AddAuthentication("Bearer") .AddIdentityServerAuthentication(options => { options.Authority = "http://localhost:5000";

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

我有两个项目:

  • IdentityServer4项目
  • API项目
API项目正在使用IdentityServer 4进行保护,如下所示:

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

        options.ApiName = "TestAPI";
        options.ApiSecret = "Password"
    });
到目前为止,一切正常


我的问题来自API项目,如何在IdentityServer 4上执行更新操作,如更新用户声明值?

如果我正确理解您的问题-您希望在发出声明的受ID保护的API内更改声明

一般来说,这是不可能的,也是不正确的

为什么不可能?

ClaimsPrincipal
类及其
Claims
属性是只读的(它只有getter,但没有setter):

公共虚拟IEnumerable声明{get;}
为什么不对?

通常声明包含一些身份验证信息(角色、用户名、一些用户配置文件信息等)。此数据应该由
身份验证提供商发布(在您的情况下是IDS),并且不应该由授权依赖于此身份验证数据的某人/某物更改


PS:出于好奇-您到底想更改哪些声明,或者这只是一个一般性问题?

能否在IdentityServer4项目的启动类中显示您的ConfigureServices方法?所有用户、声明、资源和客户端都在该方法中配置。
public virtual IEnumerable<Claim> Claims { get; }