了解Spring Boot的Oauth2启动器

时间:2016-12-31 00:20:11

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

我开始关注Oauth2初学者项目和最小配置。

https://github.com/spring-projects/spring-security-oauth/blob/master/tests/annotation/jdbc/src/main/java/demo/Application.java

所有示例都在内存配置或jdbc配置中用于存储客户端角色(例如ClientDetailsS​​erviceConfigurer)。在我的情况下,细节应该在LDAP中。所以我有两个问题。

  1. 如何覆盖默认值以转到ldap而不是内存或jdbc。
  2. 一般情况下,我如何解开Spring Boot线程并阅读入门源代码以及如何更改默认配置?我所看到的只是一个高级注释。
  3. org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer

    Spring Boot中的这种间接使得它非常难以遵循,而且很少有文档没有帮助。或许我错过了什么?

    谢谢!这一直困扰着我。

1 个答案:

答案 0 :(得分:2)

要使用LDAP实现Oauth2,您可以按照本教程:https://raymondhlee.wordpress.com/2015/12/05/oauth2-authorization-server-with-spring-security。 您还可以查看另一个问题:spring-security-oauth2 2.0.7 refresh token UserDetailsService Configuration - UserDetailsService is required

至于你的另一个问题“我想关注请求并查看调用哪些组件以及何时”:我建议您添加日志记录。

(1)在每种方法中添加日志记录

(2)在template<typename T, T default_value = T{}> class Vec { // ... }; Vec<int,42> c1; Vec<int> c11; // default_value is int{}, that is, 0 Vec<string,"for tytwo"> c2; Vec<string> c22; // default_value is string{}; that is, "" 中设置安全包的日志级别:

application.properties

(3)添加logging.level.org.springframework.security=DEBUG

CommonsRequestLoggingFilter

(4)为CommonsRequestLoggingFilter添加日志级别(在application.properties中):

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    LOGGER.info("Creating CommonsRequestLoggingFilter");
    CommonsRequestLoggingFilter crlf = new CommonsRequestLoggingFilter();
    crlf.setIncludeClientInfo(true);
    crlf.setIncludeQueryString(true);
    crlf.setIncludePayload(true);
    return crlf;
}

对于OAuth / LDAP教程,这里有值得注意的部分(引自https://raymondhlee.wordpress.com/2015/12/05/oauth2-authorization-server-with-spring-security):

  

授权服务器配置下面是我的实现   AuthorizationServerConfigurerAdapter。 JDBC的数据库模式   客户详细信息和令牌服务可以在这里找到。

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
     

登录安全配置以下是安全配置   处理用户授权。

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
     @Autowired
     private AuthenticationManager authenticationManager;
     @Autowired
     private DataSource dataSource;
     @Override
     public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
          endpoints.tokenStore(new JdbcTokenStore(dataSource)).authenticationManager(authenticationManager);
     }
     @Override
     public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
          clients.jdbc(dataSource);
      }
 }