Identityserver4 获取客户端的标识令牌

Identityserver4 获取客户端的标识令牌,identityserver4,Identityserver4,我使用IdentitServer4为windows应用程序创建了一个客户端。要调用另一个身份验证服务,即AWS STS,我需要设置与我的ID服务器的联合,并使用身份令牌 是否可以为客户端获取身份令牌 下面的代码为我提供了访问令牌,但标识令牌为null var disco = await DiscoveryClient.GetAsync(Properties.Settings.Default.IdentityUrl); if (disco.IsError) {

我使用IdentitServer4为windows应用程序创建了一个客户端。要调用另一个身份验证服务,即AWS STS,我需要设置与我的ID服务器的联合,并使用身份令牌

是否可以为客户端获取身份令牌

下面的代码为我提供了访问令牌,但标识令牌为null

    var disco = await DiscoveryClient.GetAsync(Properties.Settings.Default.IdentityUrl);
    if (disco.IsError)
    {
      return false;
    }

    var tokenClient = new TokenClient(disco.TokenEndpoint, _executionContext.ClientID, _executionContext.Secret);
    var tokenResponse = await tokenClient.RequestClientCredentialsAsync("api.v1");

    _executionContext.AgentToken = tokenResponse.AccessToken;  // OK
    _executionContext.IdentityToken = tokenResponse.IdentityToken; // NULL

不,根据定义,客户端不能为自己请求标识令牌。仅代表用户。从:

使用者

用户是使用已注册客户端访问的用户 资源

客户

客户机是一种从服务器请求令牌的软件 IdentityServer-用于验证请求 身份令牌或用于访问请求访问的资源 代币

客户端无法为自己请求标识令牌的原因是,它没有并且不能有子声明:

子声明的存在或不存在使API能够区分 在代表客户端的呼叫和代表用户的呼叫之间


下面是一个关于如何使用密码授权代表用户请求身份令牌的示例。

我讨厌安全方面的东西。我希望我们能信任别人: