使用 JWT 令牌进行身份验证的最佳做法是什么?
What's the best practice of using JWT token for authentication?
目前,我的 Spring 引导项目由几个 REST 服务组成;资源服务、认证服务等。
每个服务的名称都是自我描述的,但这里是角色,
- 资源服务:负责管理User、Transaction、Supplier等所有资源。
- 身份验证服务器:负责根据 'password' grant_type 请求创建 JWT 访问令牌
该框架使用 public 密钥为我进行 JWT 令牌验证。目前,如果请求的 JWT 令牌有效,资源服务器会处理任何请求。但是,我不确定最佳做法是什么以及如何验证请求者是否拥有所请求的资源。
例如,如果用户 Jacob 想要检索 Paul 使用有效 JWT 创建的交易。我的应用程序需要以某种方式验证请求者,Jacob 没有 Paul 交易的所有权。
提前致谢!
我认为 JWT 令牌背后的想法是你无法从令牌本身确定它来自谁,你只检查令牌是否有效并且你还要检查时间戳。
我想说的最佳做法是保留您的访问令牌 short-lived 并将它们放在服务器端远离 user-agent 并始终在线路上使用 SSL。
JWT 访问令牌是不记名令牌。顾名思义,谁拥有它们,谁就可以使用它们。
将访问令牌想象成 5 英镑(5 英镑),将您的交易资源服务器想象成酒保。
现在,假设您将 5 英镑掉在地上。
今天是我的幸运日!我拿起它,去酒吧买一个pint。
酒保问我5英镑的钞票是谁的?
没有
就像您的服务器不关心是 Jacob 还是 Paul 持有令牌一样。
目前,我的 Spring 引导项目由几个 REST 服务组成;资源服务、认证服务等。
每个服务的名称都是自我描述的,但这里是角色,
- 资源服务:负责管理User、Transaction、Supplier等所有资源。
- 身份验证服务器:负责根据 'password' grant_type 请求创建 JWT 访问令牌
该框架使用 public 密钥为我进行 JWT 令牌验证。目前,如果请求的 JWT 令牌有效,资源服务器会处理任何请求。但是,我不确定最佳做法是什么以及如何验证请求者是否拥有所请求的资源。
例如,如果用户 Jacob 想要检索 Paul 使用有效 JWT 创建的交易。我的应用程序需要以某种方式验证请求者,Jacob 没有 Paul 交易的所有权。
提前致谢!
我认为 JWT 令牌背后的想法是你无法从令牌本身确定它来自谁,你只检查令牌是否有效并且你还要检查时间戳。
我想说的最佳做法是保留您的访问令牌 short-lived 并将它们放在服务器端远离 user-agent 并始终在线路上使用 SSL。
JWT 访问令牌是不记名令牌。顾名思义,谁拥有它们,谁就可以使用它们。
将访问令牌想象成 5 英镑(5 英镑),将您的交易资源服务器想象成酒保。
现在,假设您将 5 英镑掉在地上。
今天是我的幸运日!我拿起它,去酒吧买一个pint。
酒保问我5英镑的钞票是谁的?
没有
就像您的服务器不关心是 Jacob 还是 Paul 持有令牌一样。