我有一个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”字段,其余部分似乎是相同的。
答案 0 :(得分:0)
到目前为止,它运行良好,但是我对WinForm应用程序的多个实例有疑问。所有客户都收到相同的令牌吗?
不,通常他们没有。但请注意:如果他们会收到相同的令牌,那就没关系了。
exp
字段很可能“总是”不同,因为它取决于创建时间,因此您的令牌不太可能相同。
但是,再次;令牌最有可能被签名(甚至加密)。这基本上是您确保令牌有效的保障。即使令牌相等,也没关系。例如,这意味着服务器不应期望令牌是唯一的。
看来,您现在有几个应用程序,它们使用相同的api密钥和密码登录。
我建议添加一些内容,例如client id
,以便能够识别不同的客户。这也会使您的令牌具有唯一性。