客户端是否使用收到的JWT令牌回叫服务器?

时间:2020-04-14 23:26:44

标签: security authentication jwt

我是JWT的新手,因此尝试了解使用JWT时的复杂性和期望。就我而言,我拥有生成JWT令牌的微服务。 JWT支持RS256和HS256机制。据我了解,在使用RS256的情况下,我将公钥分发给客户端。如果是HS256,我会将机密分发给客户端。

假设我将这两种方式中的任何一种都授予客户,那么客户的期望是什么?客户是否应该将我传递回给他们的令牌视为不可变的,而他们只是在随后的API调用中将确切的令牌发送给我?还是建议/允许他们更改令牌并创建一个新令牌,例如通过更改令牌有效负载中的受众之类的东西,然后让我的服务器验证新传递的令牌?我的服务器应该能够验证两个令牌,但是我不知道推荐哪种方法。如果推荐的方法是让我的客户不更改令牌,为什么我首先需要将密钥分发给客户?

1 个答案:

答案 0 :(得分:0)

请勿将密钥分发给客户端。客户端不应能够修改JWT访问令牌。它应该将令牌视为不透明。

只有接受令牌的资源服务器(公开API)才应验证签名。

在OAuth2中,客户端是获取访问令牌并使用它来调用API服务器的应用程序。只要它可以调用API,它就不必在乎令牌。

授权服务器对用户进行身份验证,获得用户的同意,并将令牌发行给客户端。

然后,客户端使用令牌使用Authorization标头中的令牌来调用资源服务器(API)。

在您的情况下,授权服务器和资源服务器可能是相同的,但它们不应与客户端共享签名密钥。