Skip to content

Commit c979fbf

Browse files
committed
add sso authserver and resource
1 parent 2f47c3c commit c979fbf

File tree

129 files changed

+28537
-61
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+28537
-61
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.

oauth2-authorization-server/pom.xml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>2.1.14.RELEASE</version>
9+
<relativePath/> <!-- lookup parent from repository -->
10+
</parent>
11+
<groupId>com.springcli</groupId>
12+
<artifactId>oauth2-authorization-server</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<name>oauth2-authorization-server</name>
15+
<description>oauth2-authorization-server</description>
16+
<properties>
17+
<java.version>1.8</java.version>
18+
</properties>
19+
20+
<dependencies>
21+
<!-- thymeleaf+SpringSecurity+Oauth2 -->
22+
<dependency>
23+
<groupId>org.springframework.boot</groupId>
24+
<artifactId>spring-boot-starter-thymeleaf</artifactId>
25+
</dependency>
26+
27+
<dependency>
28+
<groupId>org.thymeleaf.extras</groupId>
29+
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
30+
<version>3.0.2.RELEASE</version>
31+
</dependency>
32+
33+
34+
<!-- Lombok -->
35+
<dependency>
36+
<groupId>org.projectlombok</groupId>
37+
<artifactId>lombok</artifactId>
38+
</dependency>
39+
40+
<!-- redis依赖 -->
41+
<dependency>
42+
<groupId>org.springframework.boot</groupId>
43+
<artifactId>spring-boot-starter-data-redis</artifactId>
44+
</dependency>
45+
<!-- 如果在properties中配置了pool,则需要引入这个依赖 -->
46+
<!--<dependency>
47+
<groupId>org.apache.commons</groupId>
48+
<artifactId>commons-pool2</artifactId>
49+
</dependency>-->
50+
51+
<dependency>
52+
<groupId>io.springfox</groupId>
53+
<artifactId>springfox-swagger2</artifactId>
54+
<version>2.9.2</version>
55+
</dependency>
56+
<!-- swagger ui -->
57+
<dependency>
58+
<groupId>io.springfox</groupId>
59+
<artifactId>springfox-swagger-ui</artifactId>
60+
<version>2.9.2</version>
61+
</dependency>
62+
63+
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
64+
<dependency>
65+
<groupId>com.alibaba</groupId>
66+
<artifactId>fastjson</artifactId>
67+
<version>1.2.68</version>
68+
</dependency>
69+
70+
<dependency>
71+
<groupId>org.springframework.boot</groupId>
72+
<artifactId>spring-boot-starter-security</artifactId>
73+
</dependency>
74+
75+
<dependency>
76+
<groupId>org.springframework.security.oauth</groupId>
77+
<artifactId>spring-security-oauth2</artifactId>
78+
<version>2.3.5.RELEASE</version>
79+
</dependency>
80+
81+
<!-- 用于资源服务器的自动配置 -->
82+
<dependency>
83+
<groupId>org.springframework.security.oauth.boot</groupId>
84+
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
85+
<version>2.1.2.RELEASE</version>
86+
<scope>compile</scope>
87+
</dependency>
88+
89+
<dependency>
90+
<groupId>org.springframework.security</groupId>
91+
<artifactId>spring-security-jwt</artifactId>
92+
<version>1.1.0.RELEASE</version>
93+
</dependency>
94+
95+
<dependency>
96+
<groupId>org.springframework.boot</groupId>
97+
<artifactId>spring-boot-starter</artifactId>
98+
</dependency>
99+
100+
<!-- Web -->
101+
<dependency>
102+
<groupId>org.springframework.boot</groupId>
103+
<artifactId>spring-boot-starter-web</artifactId>
104+
</dependency>
105+
106+
<dependency>
107+
<groupId>org.springframework.boot</groupId>
108+
<artifactId>spring-boot-starter-test</artifactId>
109+
<scope>test</scope>
110+
<exclusions>
111+
<exclusion>
112+
<groupId>org.junit.vintage</groupId>
113+
<artifactId>junit-vintage-engine</artifactId>
114+
</exclusion>
115+
</exclusions>
116+
</dependency>
117+
118+
<dependency>
119+
<groupId>mysql</groupId>
120+
<artifactId>mysql-connector-java</artifactId>
121+
</dependency>
122+
<dependency>
123+
<groupId>tk.mybatis</groupId>
124+
<artifactId>mapper-spring-boot-starter</artifactId>
125+
<version>2.1.5</version>
126+
</dependency>
127+
<!-- 数据库 -->
128+
<dependency>
129+
<groupId>com.zaxxer</groupId>
130+
<artifactId>HikariCP</artifactId>
131+
</dependency>
132+
<dependency>
133+
<groupId>org.springframework.boot</groupId>
134+
<artifactId>spring-boot-starter-jdbc</artifactId>
135+
<exclusions>
136+
<!-- 排除 tomcat-jdbc 以使用 HikariCP -->
137+
<exclusion>
138+
<groupId>org.apache.tomcat</groupId>
139+
<artifactId>tomcat-jdbc</artifactId>
140+
</exclusion>
141+
</exclusions>
142+
</dependency>
143+
</dependencies>
144+
145+
<build>
146+
<plugins>
147+
<plugin>
148+
<groupId>org.springframework.boot</groupId>
149+
<artifactId>spring-boot-maven-plugin</artifactId>
150+
</plugin>
151+
</plugins>
152+
</build>
153+
154+
</project>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.springcli.ssoauthdemo;
1+
package com.springbootcli.ssoauthdemo;
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package com.springcli.ssoauthdemo.config;
1+
package com.springbootcli.ssoauthdemo.config;
22

33
import org.springframework.context.annotation.Bean;
44
import org.springframework.context.annotation.Configuration;
55
import org.springframework.data.redis.connection.RedisConnectionFactory;
66
import org.springframework.http.HttpMethod;
77
import org.springframework.security.authentication.AuthenticationManager;
8-
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
98
import org.springframework.security.core.userdetails.UserDetailsService;
109
import org.springframework.security.crypto.password.PasswordEncoder;
1110
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
@@ -32,7 +31,7 @@
3231
*/
3332
@Configuration
3433
@EnableAuthorizationServer
35-
@EnableGlobalMethodSecurity(prePostEnabled = true)
34+
//@EnableGlobalMethodSecurity(prePostEnabled = true)
3635
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
3736

3837
/**
@@ -90,12 +89,13 @@ public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws E
9089
*/
9190
@Override
9291
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
93-
security
94-
.tokenKeyAccess("permitAll()")
95-
//isAuthenticated():排除anonymous isFullyAuthenticated():排除anonymous以及remember-me
96-
.checkTokenAccess("isAuthenticated()")
97-
//允许表单认证
98-
.allowFormAuthenticationForClients();
92+
// security
93+
// .tokenKeyAccess("permitAll()")
94+
// //isAuthenticated():排除anonymous isFullyAuthenticated():排除anonymous以及remember-me
95+
// .checkTokenAccess("isAuthenticated()")
96+
// //允许表单认证
97+
// .allowFormAuthenticationForClients();
98+
security.allowFormAuthenticationForClients().tokenKeyAccess("isAuthenticated()");
9999
}
100100

101101
/**
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
package com.springcli.ssoauthdemo.config;
1+
package com.springbootcli.ssoauthdemo.config;
22

33
import com.google.common.collect.Lists;
4-
import com.springcli.ssoauthdemo.model.UserDTO;
5-
import com.springcli.ssoauthdemo.model.dataobject.PermissionDO;
6-
import com.springcli.ssoauthdemo.model.dataobject.UserDO;
7-
import com.springcli.ssoauthdemo.service.impl.PermissionService;
8-
import com.springcli.ssoauthdemo.service.impl.UserService;
9-
import org.springframework.beans.factory.annotation.Autowired;
4+
import com.springbootcli.ssoauthdemo.model.dataobject.UserDO;
5+
import com.springbootcli.ssoauthdemo.service.PermissionService;
6+
import com.springbootcli.ssoauthdemo.service.UserService;
7+
import com.springbootcli.ssoauthdemo.model.UserDTO;
8+
import com.springbootcli.ssoauthdemo.model.dataobject.PermissionDO;
109
import org.springframework.security.core.GrantedAuthority;
1110
import org.springframework.security.core.authority.SimpleGrantedAuthority;
1211
import org.springframework.security.core.userdetails.UserDetails;
1312
import org.springframework.security.core.userdetails.UserDetailsService;
1413
import org.springframework.security.core.userdetails.UsernameNotFoundException;
1514
import org.springframework.stereotype.Service;
1615

16+
import javax.annotation.Resource;
1717
import java.util.List;
1818

1919
/**
@@ -23,10 +23,10 @@
2323
@Service(value = "userDetailsService")
2424
public class UserDetailsServiceImpl implements UserDetailsService {
2525

26-
@Autowired
26+
@Resource
2727
private UserService userService;
2828

29-
@Autowired
29+
@Resource
3030
private PermissionService permissionService;
3131

3232

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
package com.springcli.ssoauthdemo.config;
1+
package com.springbootcli.ssoauthdemo.config;
22

3+
import org.springframework.beans.factory.annotation.Autowired;
34
import org.springframework.boot.context.properties.ConfigurationProperties;
45
import org.springframework.boot.jdbc.DataSourceBuilder;
56
import org.springframework.context.annotation.Bean;
67
import org.springframework.context.annotation.Primary;
78
import org.springframework.core.annotation.Order;
89
import org.springframework.security.authentication.AuthenticationManager;
10+
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
911
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
1012
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1113
import org.springframework.security.config.annotation.web.builders.WebSecurity;
@@ -22,7 +24,7 @@
2224
* @author lhy
2325
* @date 2021/7/3
2426
*/
25-
@Order(2)
27+
//@Order(2)
2628
@EnableWebSecurity
2729
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
2830

@@ -65,17 +67,17 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
6567
// .exceptionHandling().accessDeniedHandler(null);
6668
// }
6769

68-
// @Override
69-
// protected void configure(HttpSecurity http) throws Exception {
70-
// http.formLogin()
71-
// .loginPage("/login")
72-
// .and()
73-
// .authorizeRequests()
74-
// .antMatchers("/login").permitAll()
75-
// .anyRequest()
76-
// .authenticated()
77-
// .and().csrf().disable().cors();
78-
// }
70+
@Override
71+
protected void configure(HttpSecurity http) throws Exception {
72+
http.formLogin()
73+
.loginPage("/login")
74+
.and()
75+
.authorizeRequests()
76+
.antMatchers("/login").permitAll()
77+
.anyRequest()
78+
.authenticated()
79+
.and().csrf().disable().cors();
80+
}
7981

8082
/**
8183
* 将 check_token 暴露出去,否则资源服务器访问时报403错误
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.springbootcli.ssoauthdemo.controller;
2+
3+
import org.springframework.stereotype.Controller;
4+
import org.springframework.web.bind.annotation.GetMapping;
5+
import org.springframework.web.bind.annotation.RequestMapping;
6+
7+
import java.security.Principal;
8+
9+
/**
10+
* 自定义登录页
11+
*/
12+
@Controller
13+
public class LoginController {
14+
15+
@RequestMapping("/login")
16+
public String login() {
17+
return "login";
18+
}
19+
20+
@GetMapping("/index")
21+
public String index() {
22+
return "index";
23+
}
24+
25+
@GetMapping("user")
26+
public Principal currentUser(Principal principal) {
27+
return principal;
28+
}
29+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.springbootcli.ssoauthdemo.controller;
2+
3+
import org.springframework.web.bind.annotation.RequestMapping;
4+
import org.springframework.web.bind.annotation.RestController;
5+
6+
import java.security.Principal;
7+
8+
@RestController
9+
public class UserController {
10+
11+
@RequestMapping("/user/me")
12+
public Principal user(Principal principal) {
13+
System.out.println(principal);
14+
return principal;
15+
}
16+
17+
}

0 commit comments

Comments
 (0)