From b42cd58ba34294e07d4e4351a7724d1d2636b4dd Mon Sep 17 00:00:00 2001 From: simonpdh <822407904@qq.com> Date: Mon, 4 Nov 2019 11:21:08 +0800 Subject: [PATCH 1/5] Update AuthorizationServerConfiguration.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 支持密码模式和refresh_token --- .../AuthorizationServerConfiguration.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/AuthorizationServerConfiguration.java b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/AuthorizationServerConfiguration.java index d601b11..b4b7ebd 100644 --- a/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/AuthorizationServerConfiguration.java +++ b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/AuthorizationServerConfiguration.java @@ -1,10 +1,10 @@ package com.funtl.oauth2.server.config; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; @@ -20,30 +20,33 @@ @EnableAuthorizationServer public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { - @Bean - @Primary - @ConfigurationProperties(prefix = "spring.datasource") - public DataSource dataSource() { - // 配置数据源(注意,我使用的是 HikariCP 连接池),以上注解是指定数据源,否则会有冲突 - return DataSourceBuilder.create().build(); - } + @Autowired + private AuthenticationManager authenticationManager; + @Autowired + private DataSource dataSource; + @Autowired + private UserDetailsService userDetailsService; @Bean public TokenStore tokenStore() { // 基于 JDBC 实现,令牌保存到数据 - return new JdbcTokenStore(dataSource()); + return new JdbcTokenStore(dataSource); } @Bean public ClientDetailsService jdbcClientDetails() { // 基于 JDBC 实现,需要事先在数据库配置客户端信息 - return new JdbcClientDetailsService(dataSource()); + return new JdbcClientDetailsService(dataSource); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { // 设置令牌 endpoints.tokenStore(tokenStore()); + //支持密码模式 + endpoints.authenticationManager(authenticationManager); + //支持refresh_token + endpoints.userDetailsService(userDetailsService); } @Override From 46e8ecb47b2d42f618b66845935aefe10e5e3f3b Mon Sep 17 00:00:00 2001 From: simonpdh <822407904@qq.com> Date: Mon, 4 Nov 2019 11:21:39 +0800 Subject: [PATCH 2/5] Update WebSecurityConfiguration.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 支持密码模式和refresh_token --- .../oauth2/server/config/WebSecurityConfiguration.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/WebSecurityConfiguration.java b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/WebSecurityConfiguration.java index 81adef0..7236d6f 100644 --- a/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/WebSecurityConfiguration.java +++ b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/WebSecurityConfiguration.java @@ -3,6 +3,7 @@ import com.funtl.oauth2.server.config.service.UserDetailsServiceImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; @@ -39,4 +40,10 @@ public void configure(WebSecurity web) throws Exception { // 将 check_token 暴露出去,否则资源服务器访问时报 403 错误 web.ignoring().antMatchers("/oauth/check_token"); } + + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } } From 6936be994912f87f5dc7b0061a798735112f0a67 Mon Sep 17 00:00:00 2001 From: simonpdh <822407904@qq.com> Date: Mon, 4 Nov 2019 11:22:31 +0800 Subject: [PATCH 3/5] Create CommonConifg.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 防止跟UserDetailsServiceImpl循环依赖 --- .../oauth2/server/config/CommonConifg.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/CommonConifg.java diff --git a/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/CommonConifg.java b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/CommonConifg.java new file mode 100644 index 0000000..978414f --- /dev/null +++ b/spring-security-oauth2/spring-security-oauth2-server/src/main/java/com/funtl/oauth2/server/config/CommonConifg.java @@ -0,0 +1,28 @@ +package com.funtl.oauth2.server.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +import javax.sql.DataSource; + +/** + * @author simonPan + * @date 2019/11/4 11:08 + */ +@Configuration +public class CommonConifg { + /** + * 注入数据源 + * 防止跟UserDetailsServiceImpl循环依赖 + */ + @Bean + @Primary + @ConfigurationProperties(prefix = "spring.datasource") + public DataSource dataSource() { + // 配置数据源(注意,我使用的是 HikariCP 连接池),以上注解是指定数据源,否则会有冲突 + return DataSourceBuilder.create().build(); + } +} From 68438f88d190bbc893dc43d1aebbfd4e6ad2619a Mon Sep 17 00:00:00 2001 From: simonpdh <822407904@qq.com> Date: Mon, 4 Nov 2019 11:23:52 +0800 Subject: [PATCH 4/5] Update application.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 目录不对 --- .../src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-oauth2/spring-security-oauth2-server/src/main/resources/application.yml b/spring-security-oauth2/spring-security-oauth2-server/src/main/resources/application.yml index 264a5c9..b13c0cb 100644 --- a/spring-security-oauth2/spring-security-oauth2-server/src/main/resources/application.yml +++ b/spring-security-oauth2/spring-security-oauth2-server/src/main/resources/application.yml @@ -22,4 +22,4 @@ server: mybatis: type-aliases-package: com.funtl.oauth2.server.domain - mapper-locations: classpath:mapper/*.xml \ No newline at end of file + mapper-locations: classpath:tk/mybatis/mapper/*.xml From b3ff560b51face2fdf1be25dae4ff51ea2fe0581 Mon Sep 17 00:00:00 2001 From: simonpdh <822407904@qq.com> Date: Mon, 4 Nov 2019 11:25:19 +0800 Subject: [PATCH 5/5] Update application.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 目录不对 --- .../src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-oauth2/spring-security-oauth2-resource/src/main/resources/application.yml b/spring-security-oauth2/spring-security-oauth2-resource/src/main/resources/application.yml index 07f56a9..7f76d00 100644 --- a/spring-security-oauth2/spring-security-oauth2-resource/src/main/resources/application.yml +++ b/spring-security-oauth2/spring-security-oauth2-resource/src/main/resources/application.yml @@ -34,7 +34,7 @@ server: mybatis: type-aliases-package: com.funtl.oauth2.resource.domain - mapper-locations: classpath:mapper/*.xml + mapper-locations: classpath:tk/mybatis/mapper/*.xml logging: level: