Spring Boot 2 + Oauth2-保护微服务中的其余调用

时间:2019-04-15 03:05:19

标签: spring spring-boot spring-security oauth-2.0 spring-security-oauth2

我正在从事Spring Boot 2微服务。现在我打算使用OAUTH2确保我的休息电话安全。

我发现很多文章涉及Spring 2 + OAUTH2集成,但与我的要求不符,所有文章都使用表和使用角色进行安全调用

我的应用程序登录使用SAML(SSO)进行单点登录,我的要求是仅授权每个请求。最好的方法是什么?

  1. 我真的需要用表来存储用户的令牌,因为已经使用SSO登录了吗?
  2. 这里唯一的事情就是不管用户的角色如何都授权请求。

任何符合简单要求的建议或github链接将不胜感激。

2 个答案:

答案 0 :(得分:0)

@premKumarR

对于您在内存v / s JDBC中哪个更好的评论。 对于Spring Docs,

  

下面是对它们的一些讨论的描述

     

默认的InMemoryTokenStore非常适合单台服务器(即,低流量,并且在发生故障时不与备份服务器进行热交换)。大多数项目都可以从此处开始,并且可以在开发模式下以这种方式进行操作,以轻松启动没有依赖关系的服务器。

     

JdbcTokenStore是同一事物的JDBC版本,它将令牌数据存储在关系数据库中。如果可以在服务器之间共享数据库,请使用JDBC版本;如果只有一个,则可以扩展同一服务器的实例;如果有多个组件,则可以使用授权和资源服务器。要使用JdbcTokenStore,您需要在类路径上使用“ spring-jdbc”。

文档链接:https://projects.spring.io/spring-security-oauth/docs/oauth2.html

答案 1 :(得分:0)

OAuth2具有创建用于身份验证的令牌的不同实现。默认情况下,它通过随机值创建令牌,并处理所有事务,除了将其委托给TokenStore的令牌的持久性之外。默认存储是内存中的实现,但是还有其他一些实现。

JdbcTokenStore是同一事物的JDBC版本,它将令牌数据存储在关系数据库中。

商店的JSON Web Token(JWT)版本,但不保留数据。

所以回答您的问题

  • 我真的需要表格来存储用户的令牌,因为已经使用SSO进行了登录吗?

    不是必需的。据我了解,您仅打算进行身份验证而不生成令牌。

  • 这里唯一的事情是不管用户的角色如何都授权请求。

    您可以使用WebSecurityConfigurerAdapter确认传入的请求。例如如下

    公共类配置扩展了WebSecurityConfigurerAdapter {

    @Override
        public void configure(HttpSecurity http) throws Exception { 
            http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/authorization-server-1/**",
                  "/login").permitAll()
                .anyRequest().authenticated();
        }
    }