首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWT签名在资源服务器端的验证

JWT签名在资源服务器端的验证
EN

Stack Overflow用户
提问于 2015-09-09 06:38:20
回答 1查看 4.2K关注 0票数 3

根据,有两种方法可以验证JWT令牌:

  1. 使用RemoteTokenServices (基本上调用oauth服务器的/check_token端点)检索整个令牌并进行比较。
  2. 在oauth服务器公开公钥,并在资源服务器上验证JWT的签名

一开始,我尝试了第一种方法,但由于我使用了自定义令牌转换器,每次生成令牌时都会访问数据库,因此我决定在资源端切换到签名验证--不希望为每个客户端请求获得额外的数据库调用。

经过研究,我认识到ResourceServerTokenServices (接口描述令牌检索、转换和生成一个有效的OAuth2Authentication对象)只有两个默认实现:DefaultTokenServices是在oauth和资源服务器都是同一个应用程序的情况下使用的,而RemoteTokenServices是第一种方法中描述的。

因此,主要的问题是spring-oauth2是否真的没有JWT签名验证的默认实现,还是我只是找不到呢?

EN

回答 1

Stack Overflow用户

发布于 2015-09-09 10:50:44

您不需要一个特定于JWT的ResourceServerTokenServices,所以DefaultTokenServices应该做得很好。大多数实现特定细节都被发送到存储区,因此只要正确配置了JwtTokenStore,就不会出现问题。

这里

资源服务器还需要能够解码令牌,这样JwtTokenStore就有了对JwtAccessTokenConverter的依赖,授权服务器和资源服务器都需要同样的实现。默认情况下对令牌进行签名,而且资源服务器还必须能够验证签名,因此它要么需要与授权服务器(共享秘密或对称密钥)相同的对称(签名)密钥,要么需要与授权服务器中的私钥(签名密钥)相匹配的公钥(验证器密钥)(公钥-私有密钥或非对称密钥)。公钥(如果可用)由/oauth/token_key端点上的授权服务器公开

您可以将JwtAccessTokenConverter扩展到一旦授权服务器对公开的公钥进行访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32472499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档