RemoteTokenServices (基本上调用oauth服务器的/check_token端点)检索整个令牌并进行比较。一开始,我尝试了第一种方法,但由于我使用了自定义令牌转换器,每次生成令牌时都会访问数据库,因此我决定在资源端切换到签名验证--不希望为每个客户端请求获得额外的数据库调用。
经过研究,我认识到ResourceServerTokenServices (接口描述令牌检索、转换和生成一个有效的OAuth2Authentication对象)只有两个默认实现:DefaultTokenServices是在oauth和资源服务器都是同一个应用程序的情况下使用的,而RemoteTokenServices是第一种方法中描述的。
因此,主要的问题是spring-oauth2是否真的没有JWT签名验证的默认实现,还是我只是找不到呢?
发布于 2015-09-09 10:50:44
您不需要一个特定于JWT的ResourceServerTokenServices,所以DefaultTokenServices应该做得很好。大多数实现特定细节都被发送到存储区,因此只要正确配置了JwtTokenStore,就不会出现问题。
这里:
资源服务器还需要能够解码令牌,这样JwtTokenStore就有了对JwtAccessTokenConverter的依赖,授权服务器和资源服务器都需要同样的实现。默认情况下对令牌进行签名,而且资源服务器还必须能够验证签名,因此它要么需要与授权服务器(共享秘密或对称密钥)相同的对称(签名)密钥,要么需要与授权服务器中的私钥(签名密钥)相匹配的公钥(验证器密钥)(公钥-私有密钥或非对称密钥)。公钥(如果可用)由/oauth/token_key端点上的授权服务器公开
您可以将JwtAccessTokenConverter扩展到一旦授权服务器对公开的公钥进行访问。
https://stackoverflow.com/questions/32472499
复制相似问题