|
@@ -52,6 +52,7 @@ import org.thingsboard.server.service.security.auth.oauth2.HttpCookieOAuth2Autho |
|
@@ -52,6 +52,7 @@ import org.thingsboard.server.service.security.auth.oauth2.HttpCookieOAuth2Autho |
52
|
import org.thingsboard.server.service.security.auth.rest.RestAuthenticationProvider;
|
52
|
import org.thingsboard.server.service.security.auth.rest.RestAuthenticationProvider;
|
53
|
import org.thingsboard.server.service.security.auth.rest.RestLoginProcessingFilter;
|
53
|
import org.thingsboard.server.service.security.auth.rest.RestLoginProcessingFilter;
|
54
|
import org.thingsboard.server.service.security.auth.rest.RestPublicLoginProcessingFilter;
|
54
|
import org.thingsboard.server.service.security.auth.rest.RestPublicLoginProcessingFilter;
|
|
|
55
|
+import org.thingsboard.server.service.security.auth.yunteng.CodeLoginProcessingFilter;
|
55
|
|
56
|
|
56
|
import java.util.ArrayList;
|
57
|
import java.util.ArrayList;
|
57
|
import java.util.Arrays;
|
58
|
import java.util.Arrays;
|
|
@@ -70,9 +71,10 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
@@ -70,9 +71,10 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
70
|
public static final String WEBJARS_ENTRY_POINT = "/webjars/**";
|
71
|
public static final String WEBJARS_ENTRY_POINT = "/webjars/**";
|
71
|
public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**";
|
72
|
public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**";
|
72
|
public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login";
|
73
|
public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login";
|
|
|
74
|
+ public static final String CODE_BASED_LOGIN_ENTRY_POINT = "/api/yt/auth/code/login";
|
73
|
public static final String PUBLIC_LOGIN_ENTRY_POINT = "/api/auth/login/public";
|
75
|
public static final String PUBLIC_LOGIN_ENTRY_POINT = "/api/auth/login/public";
|
74
|
public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";
|
76
|
public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";
|
75
|
- protected static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/assets/**", "/static/**", "/api/noauth/**", "/webjars/**", "/api/license/**"};
|
77
|
+ protected static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/assets/**", "/static/**", "/api/noauth/**", "/webjars/**", "/api/license/**", "/api/yt/noauth/**"};
|
76
|
public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
|
78
|
public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
|
77
|
public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**";
|
79
|
public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**";
|
78
|
|
80
|
|
|
@@ -125,6 +127,13 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
@@ -125,6 +127,13 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
125
|
}
|
127
|
}
|
126
|
|
128
|
|
127
|
@Bean
|
129
|
@Bean
|
|
|
130
|
+ protected CodeLoginProcessingFilter buildSmsCodeLoginProcessingFilter() throws Exception{
|
|
|
131
|
+ CodeLoginProcessingFilter filter = new CodeLoginProcessingFilter(CODE_BASED_LOGIN_ENTRY_POINT, successHandler, failureHandler, objectMapper);
|
|
|
132
|
+ filter.setAuthenticationManager(this.authenticationManager);
|
|
|
133
|
+ return filter;
|
|
|
134
|
+ }
|
|
|
135
|
+
|
|
|
136
|
+ @Bean
|
128
|
protected RestPublicLoginProcessingFilter buildRestPublicLoginProcessingFilter() throws Exception {
|
137
|
protected RestPublicLoginProcessingFilter buildRestPublicLoginProcessingFilter() throws Exception {
|
129
|
RestPublicLoginProcessingFilter filter = new RestPublicLoginProcessingFilter(PUBLIC_LOGIN_ENTRY_POINT, successHandler, failureHandler, objectMapper);
|
138
|
RestPublicLoginProcessingFilter filter = new RestPublicLoginProcessingFilter(PUBLIC_LOGIN_ENTRY_POINT, successHandler, failureHandler, objectMapper);
|
130
|
filter.setAuthenticationManager(this.authenticationManager);
|
139
|
filter.setAuthenticationManager(this.authenticationManager);
|
|
@@ -133,7 +142,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
@@ -133,7 +142,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
133
|
|
142
|
|
134
|
protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception {
|
143
|
protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception {
|
135
|
List<String> pathsToSkip = new ArrayList<>(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS));
|
144
|
List<String> pathsToSkip = new ArrayList<>(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS));
|
136
|
- pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT,
|
145
|
+ pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT,CODE_BASED_LOGIN_ENTRY_POINT,
|
137
|
PUBLIC_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT, WEBJARS_ENTRY_POINT));
|
146
|
PUBLIC_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT, WEBJARS_ENTRY_POINT));
|
138
|
SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT);
|
147
|
SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT);
|
139
|
JwtTokenAuthenticationProcessingFilter filter
|
148
|
JwtTokenAuthenticationProcessingFilter filter
|
|
@@ -200,6 +209,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
@@ -200,6 +209,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
200
|
.antMatchers(WEBJARS_ENTRY_POINT).permitAll() // Webjars
|
209
|
.antMatchers(WEBJARS_ENTRY_POINT).permitAll() // Webjars
|
201
|
.antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API
|
210
|
.antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API
|
202
|
.antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point
|
211
|
.antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point
|
|
|
212
|
+ .antMatchers(CODE_BASED_LOGIN_ENTRY_POINT).permitAll() // SmsCode Login end-point
|
203
|
.antMatchers(PUBLIC_LOGIN_ENTRY_POINT).permitAll() // Public login end-point
|
213
|
.antMatchers(PUBLIC_LOGIN_ENTRY_POINT).permitAll() // Public login end-point
|
204
|
.antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point
|
214
|
.antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point
|
205
|
.antMatchers(NON_TOKEN_BASED_AUTH_ENTRY_POINTS).permitAll() // static resources, user activation and password reset end-points
|
215
|
.antMatchers(NON_TOKEN_BASED_AUTH_ENTRY_POINTS).permitAll() // static resources, user activation and password reset end-points
|
|
@@ -211,6 +221,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
|
@@ -211,6 +221,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt |
211
|
.exceptionHandling().accessDeniedHandler(restAccessDeniedHandler)
|
221
|
.exceptionHandling().accessDeniedHandler(restAccessDeniedHandler)
|
212
|
.and()
|
222
|
.and()
|
213
|
.addFilterBefore(buildRestLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
223
|
.addFilterBefore(buildRestLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
|
|
224
|
+ .addFilterBefore(buildSmsCodeLoginProcessingFilter(),UsernamePasswordAuthenticationFilter.class)
|
214
|
.addFilterBefore(buildRestPublicLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
225
|
.addFilterBefore(buildRestPublicLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
215
|
.addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
226
|
.addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
216
|
.addFilterBefore(buildRefreshTokenProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|
227
|
.addFilterBefore(buildRefreshTokenProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
|