春天OAuth授权服务器和资源服务器在不同的服务器

问题描述 投票:1回答:2

我想在不同的服务器上配置春季启动的授权和资源服务器,每个。 The tutorial不会没有解释究竟如何不同服务器上配置资源和授权服务器。

如果你的资源服务器是一个独立的应用程序,那么你必须确保你匹配认证服务器的功能,并提供ResourceServerTokenServices知道如何令牌正确解码。[这是什么意思,如何做到这一点?]

由于与DefaultTokenServices和选择通过TokenStore(后端存储或本地编码)大多表示。另一种方法是,其是一个Spring OAuth的功能,允许资源服务器以令牌通过授权服务器(/ OAuth的/ check_token)上的HTTP资源进行解码(不是规范的一部分)的RemoteTokenServices。 RemoteTokenServices很方便,如果没有流量的资源服务器体积巨大(每个请求必须与认证服务器进行验证),或者如果你能负担得起缓存结果。要使用你需要改变它的访问规则,揭露它的/的OAuth / check_token端点(默认为“denyAll()”)与授权服务器的AuthorizationServerSecurityConfigureAs,你可以经常使用。

正如我understad有一个建议的解决方案,资源服务器呼叫授权服务端点但上面引述的,这是可以做到仅如果没有在资源服务器的流量的体积庞大,但对于是否真正存在?

spring spring-security oauth spring-oauth2
2个回答
2
投票

比方说,你有一个验证服务器,资源服务器和客户端应用。您可以设置一个公共JWT键以验证传入令牌。那是什么意思是你的用户给他的用户名和密码通过客户端应用到auth服务器获得有效令牌和此令牌是由身份验证服务器的公钥签名。然后,每一个客户端应用调用资源服务器需要提供签名令牌,你的资源服务器应用程序使用公钥来验证传入令牌,而不是调用Auth服务器每次的。


0
投票

这个bean添加到您的资源服务器,你可以确保与单授权服务器多个资源API:

 @Primary
    @Bean
    public RemoteTokenServices tokenService() {
        RemoteTokenServices tokenService = new RemoteTokenServices();
        tokenService.setCheckTokenEndpointUrl(
          "http://localhost:8080/spring-security-oauth-server/oauth/check_token");
        tokenService.setClientId("fooClientIdPassword");
        tokenService.setClientSecret("secret");
        return tokenService;
    }
© www.soinside.com 2019 - 2024. All rights reserved.