Skip to content

Commit 3f18cf0

Browse files
committed
ApiBoot1.x版本提交
1 parent f1ac84b commit 3f18cf0

File tree

54 files changed

+733
-716
lines changed

Some content is hidden

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

54 files changed

+733
-716
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
<dependency>
4848
<groupId>org.minbox.framework</groupId>
4949
<artifactId>api-boot-dependencies</artifactId>
50-
<version>2.0.1.RELEASE</version>
50+
<version>1.0.1.RELEASE</version>
5151
<type>pom</type>
5252
<scope>import</scope>
5353
</dependency>

api-boot-project/api-boot-autoconfigure/pom.xml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>api-boot-parent</artifactId>
77
<groupId>org.minbox.framework</groupId>
8-
<version>2.0.1.RELEASE</version>
8+
<version>1.0.1.RELEASE</version>
99
<relativePath>../api-boot-parent</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>
@@ -35,6 +35,11 @@
3535
<artifactId>fastjson</artifactId>
3636
<optional>true</optional>
3737
</dependency>
38+
<dependency>
39+
<groupId>org.reflections</groupId>
40+
<artifactId>reflections</artifactId>
41+
<optional>true</optional>
42+
</dependency>
3843

3944
<!--Swagger-->
4045
<dependency>
@@ -92,5 +97,19 @@
9297
<optional>true</optional>
9398
</dependency>
9499

100+
<!--ApiBoot Security Plugin-->
101+
<dependency>
102+
<groupId>org.minbox.framework</groupId>
103+
<artifactId>api-boot-plugin-security</artifactId>
104+
<optional>true</optional>
105+
</dependency>
106+
<!--ApiBoot Oauth2 Plugin-->
107+
<dependency>
108+
<groupId>org.minbox.framework</groupId>
109+
<artifactId>api-boot-plugin-oauth</artifactId>
110+
<optional>true</optional>
111+
</dependency>
112+
113+
95114
</dependencies>
96115
</project>

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/converter/HttpMessageConverterAutoConfiguration.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.alibaba.fastjson.support.config.FastJsonConfig;
2222
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
2323
import org.minbox.framework.api.boot.common.tools.ClassTools;
24+
import org.reflections.util.ConfigurationBuilder;
2425
import org.slf4j.Logger;
2526
import org.slf4j.LoggerFactory;
2627
import org.springframework.beans.factory.BeanFactory;
@@ -30,10 +31,10 @@
3031
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3233
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
33-
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
34-
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
34+
import org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration;
3535
import org.springframework.context.annotation.Bean;
3636
import org.springframework.context.annotation.Configuration;
37+
import org.springframework.http.converter.HttpMessageConverter;
3738
import org.springframework.util.ObjectUtils;
3839

3940
import java.util.*;
@@ -51,7 +52,7 @@
5152
* GitHub:https://github.com/hengboy
5253
*/
5354
@Configuration
54-
@ConditionalOnClass(FastJsonHttpMessageConverter.class)
55+
@ConditionalOnClass({FastJsonHttpMessageConverter.class, ConfigurationBuilder.class})
5556
@AutoConfigureBefore(HttpMessageConvertersAutoConfiguration.class)
5657
@ConditionalOnProperty(
5758
prefix = "spring.http.converters",
@@ -79,7 +80,7 @@ public class HttpMessageConverterAutoConfiguration {
7980
*/
8081
@Bean
8182
@ConditionalOnMissingBean
82-
HttpMessageConverters fastJsonHttpMessageConverters() {
83+
HttpMessageConverter fastJsonHttpMessageConverters() {
8384
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
8485
//创建fastJson配置实体类
8586
FastJsonConfig fastJsonConfig = new FastJsonConfig();
@@ -95,7 +96,7 @@ HttpMessageConverters fastJsonHttpMessageConverters() {
9596
// 设置自定义的valueFilter
9697
fastJsonConfig.setSerializeFilters(getDefineFilters());
9798
fastConverter.setFastJsonConfig(fastJsonConfig);
98-
return new HttpMessageConverters(fastConverter);
99+
return fastConverter;
99100
}
100101

101102
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.minbox.framework.api.boot.autoconfigure.oauth;
2+
3+
import org.minbox.framework.api.boot.plugin.oauth2.ApiBootAuthorizationServerConfiguration;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.security.oauth2.provider.token.AccessTokenConverter;
7+
import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;
8+
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
9+
10+
import static org.minbox.framework.api.boot.autoconfigure.oauth.ApiBootOauthProperties.API_BOOT_OAUTH_PREFIX;
11+
12+
/**
13+
* ApiBoot OAuth2 自动化配置
14+
*
15+
* @author:恒宇少年 - 于起宇
16+
* <p>
17+
* DateTime:2019-03-25 11:49
18+
* Blog:http://blog.yuqiyu.com
19+
* WebSite:http://www.jianshu.com/u/092df3f77bca
20+
* Gitee:https://gitee.com/hengboy
21+
* GitHub:https://github.com/hengyuboy
22+
*/
23+
public class ApiBootAuthorizationServerAutoConfiguration extends ApiBootAuthorizationServerConfiguration {
24+
/**
25+
* 注入属性配置
26+
*/
27+
protected ApiBootOauthProperties apiBootOauthProperties;
28+
29+
public ApiBootAuthorizationServerAutoConfiguration(ApiBootOauthProperties apiBootOauthProperties) {
30+
this.apiBootOauthProperties = apiBootOauthProperties;
31+
}
32+
33+
/**
34+
* 配置jwt生成token的转换
35+
* 使用自定义Sign Key 进行加密
36+
*
37+
* @return Jwt Access Token转换实例
38+
*/
39+
@Bean
40+
@ConditionalOnProperty(prefix = API_BOOT_OAUTH_PREFIX, name = "jwt.enable", havingValue = "true")
41+
public AccessTokenConverter jwtAccessTokenConverter() {
42+
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
43+
converter.setSigningKey(apiBootOauthProperties.getJwt().getSignKey());
44+
return converter;
45+
}
46+
47+
/**
48+
* 默认token转换
49+
* 不配置jwt转换时
50+
*
51+
* @return AccessTokenConverter
52+
*/
53+
@Bean
54+
@ConditionalOnProperty(prefix = API_BOOT_OAUTH_PREFIX, name = "jwt.enable", havingValue = "false", matchIfMissing = true)
55+
public AccessTokenConverter defaultAccessTokenConverter() {
56+
return new DefaultAccessTokenConverter();
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.minbox.framework.api.boot.autoconfigure.oauth;
2+
3+
import org.minbox.framework.api.boot.plugin.oauth2.ApiBootAuthorizationServerConfiguration;
4+
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
5+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7+
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
8+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
12+
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
13+
import org.springframework.security.oauth2.provider.token.TokenStore;
14+
import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore;
15+
16+
import javax.sql.DataSource;
17+
18+
import static org.minbox.framework.api.boot.autoconfigure.oauth.ApiBootOauthProperties.API_BOOT_OAUTH_PREFIX;
19+
20+
/**
21+
* @author:恒宇少年 - 于起宇
22+
* <p>
23+
* DateTime:2019-03-25 15:29
24+
* Blog:http://blog.yuqiyu.com
25+
* WebSite:http://www.jianshu.com/u/092df3f77bca
26+
* Gitee:https://gitee.com/hengboy
27+
* GitHub:https://github.com/hengyuboy
28+
*/
29+
@Configuration
30+
@EnableConfigurationProperties(ApiBootOauthProperties.class)
31+
@EnableAuthorizationServer
32+
@ConditionalOnClass(ApiBootAuthorizationServerConfiguration.class)
33+
@ConditionalOnProperty(prefix = API_BOOT_OAUTH_PREFIX, name = "away", havingValue = "jdbc")
34+
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
35+
public class ApiBootAuthorizationServerJdbcAutoConfiguration extends ApiBootAuthorizationServerAutoConfiguration {
36+
37+
private DataSource dataSource;
38+
39+
public ApiBootAuthorizationServerJdbcAutoConfiguration(ApiBootOauthProperties apiBootOauthProperties, DataSource dataSource) {
40+
super(apiBootOauthProperties);
41+
this.dataSource = dataSource;
42+
}
43+
44+
@Override
45+
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
46+
clients.jdbc(dataSource);
47+
}
48+
49+
/**
50+
* 配置内存方式令牌存储
51+
*
52+
* @return TokenStore
53+
*/
54+
@Bean
55+
public TokenStore jdbcTokenStore() {
56+
return new JdbcTokenStore(dataSource);
57+
}
58+
59+
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package org.minbox.framework.api.boot.autoconfigure.oauth;
2+
3+
import org.minbox.framework.api.boot.plugin.oauth2.ApiBootAuthorizationServerConfiguration;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
5+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
6+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
7+
import org.springframework.context.annotation.Bean;
8+
import org.springframework.context.annotation.Configuration;
9+
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
10+
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
11+
import org.springframework.security.oauth2.provider.token.TokenStore;
12+
import org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore;
13+
14+
import static org.minbox.framework.api.boot.autoconfigure.oauth.ApiBootOauthProperties.API_BOOT_OAUTH_PREFIX;
15+
16+
/**
17+
* @author:恒宇少年 - 于起宇
18+
* <p>
19+
* DateTime:2019-03-25 15:26
20+
* Blog:http://blog.yuqiyu.com
21+
* WebSite:http://www.jianshu.com/u/092df3f77bca
22+
* Gitee:https://gitee.com/hengboy
23+
* GitHub:https://github.com/hengyuboy
24+
*/
25+
@Configuration
26+
@ConditionalOnClass(ApiBootAuthorizationServerConfiguration.class)
27+
@EnableConfigurationProperties(ApiBootOauthProperties.class)
28+
@EnableAuthorizationServer
29+
@ConditionalOnProperty(prefix = API_BOOT_OAUTH_PREFIX, name = "away", havingValue = "memory", matchIfMissing = true)
30+
public class ApiBootAuthorizationServerMemoryAutoConfiguration extends ApiBootAuthorizationServerAutoConfiguration {
31+
32+
public ApiBootAuthorizationServerMemoryAutoConfiguration(ApiBootOauthProperties apiBootOauthProperties) {
33+
super(apiBootOauthProperties);
34+
}
35+
36+
@Override
37+
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
38+
clients.inMemory()
39+
.withClient(apiBootOauthProperties.getClientId())
40+
.authorizedGrantTypes(apiBootOauthProperties.getGrantTypes())
41+
.secret(passwordEncoder().encode(apiBootOauthProperties.getClientSecret()))
42+
.scopes(apiBootOauthProperties.getScopes());
43+
}
44+
45+
/**
46+
* 配置内存方式令牌存储
47+
*
48+
* @return TokenStore
49+
*/
50+
@Bean
51+
public TokenStore memoryTokenStore() {
52+
return new InMemoryTokenStore();
53+
}
54+
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,18 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.minbox.framework.api.boot.autoconfigure.security;
17+
package org.minbox.framework.api.boot.autoconfigure.oauth;
1818

1919
import lombok.Data;
20+
import org.minbox.framework.api.boot.autoconfigure.security.SecurityAway;
2021
import org.springframework.boot.context.properties.ConfigurationProperties;
2122
import org.springframework.context.annotation.Configuration;
2223

23-
import static org.minbox.framework.api.boot.autoconfigure.security.ApiBootOauthProperties.API_BOOT_OAUTH_PREFIX;
24+
import static org.minbox.framework.api.boot.autoconfigure.oauth.ApiBootOauthProperties.API_BOOT_OAUTH_PREFIX;
2425

2526
/**
2627
* 整合Oauth2 相关属性配置
28+
*
2729
* @author:恒宇少年 - 于起宇
2830
* <p>
2931
* DateTime:2019-03-14 16:52
@@ -57,7 +59,7 @@ public class ApiBootOauthProperties {
5759
/**
5860
* 客户端授权类型集合
5961
*/
60-
private String[] grantTypes = new String[]{"password"};
62+
private String[] grantTypes = new String[]{"password", "refresh_token"};
6163
/**
6264
* 客户端作用域集合
6365
*/
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.minbox.framework.api.boot.autoconfigure.security.resource;
17+
package org.minbox.framework.api.boot.autoconfigure.oauth;
1818

1919
import org.minbox.framework.api.boot.autoconfigure.security.ApiBootSecurityProperties;
2020
import org.springframework.beans.factory.annotation.Autowired;

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/security/ApiBootSecurityProperties.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.minbox.framework.api.boot.autoconfigure.security;
1818

1919
import lombok.Data;
20+
import org.minbox.framework.api.boot.plugin.security.SecurityUser;
2021
import org.springframework.boot.context.properties.ConfigurationProperties;
2122
import org.springframework.context.annotation.Configuration;
2223

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Copyright [2019] [恒宇少年 - 于起宇]
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.minbox.framework.api.boot.autoconfigure.security;
18+
19+
import org.minbox.framework.api.boot.plugin.security.ApiBootWebSecurityConfiguration;
20+
import org.springframework.util.ObjectUtils;
21+
22+
import java.util.ArrayList;
23+
import java.util.Arrays;
24+
import java.util.List;
25+
26+
/**
27+
* ApiBoot SpringSecurity自动化封装配置
28+
*
29+
* @author:恒宇少年 - 于起宇
30+
* <p>
31+
* DateTime:2019-03-14 15:24
32+
* Blog:http://blog.yuqiyu.com
33+
* WebSite:http://www.jianshu.com/u/092df3f77bca
34+
* Gitee:https://gitee.com/hengboy
35+
* GitHub:https://github.com/hengboy
36+
*/
37+
public class ApiBootWebSecurityAutoConfiguration extends ApiBootWebSecurityConfiguration {
38+
/**
39+
* 注入ApiBoot安全属性
40+
*/
41+
protected ApiBootSecurityProperties apiBootSecurityProperties;
42+
43+
public ApiBootWebSecurityAutoConfiguration(ApiBootSecurityProperties apiBootSecurityProperties) {
44+
this.apiBootSecurityProperties = apiBootSecurityProperties;
45+
}
46+
47+
/**
48+
* 配置排除的路径列表
49+
*
50+
* @return 将要排除的路径
51+
*/
52+
@Override
53+
protected List<String> configureIgnoreUrls() {
54+
List<String> ignoringUrls = new ArrayList<>();
55+
// 默认排除路径
56+
ignoringUrls.addAll(Arrays.asList(ApiBootSecurityProperties.DEFAULT_IGNORE_URLS));
57+
// 自定义排除的路径
58+
if (!ObjectUtils.isEmpty(apiBootSecurityProperties.getIgnoringUrls())) {
59+
ignoringUrls.addAll(Arrays.asList(apiBootSecurityProperties.getIgnoringUrls()));
60+
}
61+
return ignoringUrls;
62+
}
63+
}

0 commit comments

Comments
 (0)