IdentityServer4:具有客户端凭据的WinForm客户端的多个实例-令牌问题

时间:2019-07-14 13:07:09

标签: c# .net winforms identityserver4

我有一个WinForm应用程序和一个我用IdentityServer4保护的API。由于没有单独的凭据,因此IS4中的客户端设置如下,并且仅此应用程序本身应具有对API的常规访问权限。

new Client
{
    ClientId = "ClientApp",
        // no interactive user, use the clientid/secret for authentication
    AllowedGrantTypes = GrantTypes.ClientCredentials,

    // secret for authentication
    ClientSecrets =
    {
        new Secret("secret".Sha256())
    },

    // scopes that client has access to
    AllowedScopes = { "APIOne" }
}

到目前为止,它运行良好,但是我对WinForm应用程序的多个实例有疑问。所有客户都收到相同的令牌吗?因为没有单独的凭据,所以只有一个客户机密。

如果我用https://jwt.io/来查看标记,我会发现它们是不同的,但只有“ exp”字段,其余部分似乎是相同的。

1 个答案:

答案 0 :(得分:0)

  

到目前为止,它运行良好,但是我对WinForm应用程序的多个实例有疑问。所有客户都收到相同的令牌吗?

不,通常他们没有。但请注意:如果他们会收到相同的令牌,那就没关系了。

exp字段很可能“总是”不同,因为它取决于创建时间,因此您的令牌不太可能相同。

但是,再次;令牌最有可能被签名(甚至加密)。这基本上是您确保令牌有效的保障。即使令牌相等,也没关系。例如,这意味着服务器不应期望令牌是唯一的。


已经说过了;有一个陷阱。

看来,您现在有几个应用程序,它们使用相同的api密钥和密码登录。

我建议添加一些内容,例如client id,以便能够识别不同的客户。这也会使您的令牌具有唯一性。