package com.battcn.jwt.security.config;
import com.battcn.jwt.pojo.enums.RoleEnum;
import com.battcn.jwt.security.RestAuthenticationEntryPoint;
import com.battcn.jwt.security.auth.login.LoginAuthenticationProvider;
import com.battcn.jwt.security.auth.login.LoginProcessingFilter;
import com.battcn.jwt.security.auth.token.SkipPathRequestMatcher;
import com.battcn.jwt.security.auth.token.TokenAuthenticationProcessingFilter;
import com.battcn.jwt.security.auth.token.TokenAuthenticationProvider;
import com.battcn.jwt.security.auth.token.extractor.TokenExtractor;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
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.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import java.util.List;
/**
* @author Levin
*/
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
public static final String TOKEN_HEADER_PARAM = "X-Authorization";
private static final String FORM_BASED_LOGIN_ENTRY_POINT = "/openplt/auth/login";
private static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/openplt/**";
private static final String MANAGE_TOKEN_BASED_AUTH_ENTRY_POINT = "/manage/**";
private static final String TOKEN_REFRESH_ENTRY_POINT = "/openplt/auth/refresh_token";
private final RestAuthenticationEntryPoint authenticationEntryPoint;
private final AuthenticationSuccessHandler successHandler;
private final AuthenticationFailureHandler failureHandler;
private final LoginAuthenticationProvider loginAuthenticationProvider;
private final TokenAuthenticationProvider tokenAuthenticationProvider;
private final TokenExtractor tokenExtractor;
@Autowired
public WebSecurityConfig(RestAuthenticationEntryPoint authenticationEntryPoint, AuthenticationSuccessHandler successHandler, AuthenticationFailureHandler failureHandler, LoginAuthenticationProvider loginAuthenticationProvider, TokenAuthenticationProvider tokenAuthenticationProvider, TokenExtractor tokenExtractor) {
this.authenticationEntryPoint = authenticationEntryPoint;
this.successHandler = successHandler;
this.failureHandler = failureHandler;
this.loginAuthenticationProvider = loginAuthenticationProvider;
this.tokenAuthenticationProvider = tokenAuthenticationProvider;
this.tokenExtractor = tokenExtractor;
}
private LoginProcessingFilter buildLoginProcessingFilter() throws Exception {
LoginProcessingFilter filter = new LoginProcessingFilter(FORM_BASED_LOGIN_ENTRY_POINT, successHandler, failureHandler);
filter.setAuthenticationManager(super.authenticationManager());
return filter;
}
private TokenAuthenticationProcessingFilter buildTokenAuthenticationProcessingFilter() throws Exception {
List<String> list = Lists.newArrayList(TOKEN_BASED_AUTH_ENTRY_POINT, MANAGE_TOKEN_BASED_AUTH_ENTRY_POINT);
SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(list);
TokenAuthenticationProcessingFilter filter = new TokenAuthenticationProcessingFilter(failureHandler, tokenExtractor, matcher);
filter.setAuthenticationManager(super.authenticationManager());
return filter;
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) {
auth.authenticationProvider(loginAuthenticationProvider);
auth.authenticationProvider(tokenAuthenticationProvider);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable() // 因为使用的是JWT,因此这里可以关闭csrf了
.exceptionHandling()
.authenticationEntryPoint(this.authenticationEntryPoint)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point
.antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point
.and()
.authorizeRequests()
.antMatchers(TOKEN_BASED_AUTH_ENTRY_POINT).authenticated() // Protected API End-points
.antMatchers(MANAGE_TOKEN_BASED_AUTH_ENTRY_POINT).hasAnyRole(RoleEnum.ADMIN.desc())
.and()
.addFilterBefore(buildLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(buildTokenAuthenticationProcessingFilter(), UsernamePasswordAuthenticationFilter.class);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
jwt springcloud
共309个文件
xml:149个
java:90个
class:38个
需积分: 10 18 下载量 132 浏览量
2018-11-20
14:50:29
上传
评论
收藏 200KB RAR 举报
温馨提示
jwt springcloud,修复了刷新tokenbug, 注意修改下端口网关 登录认证地址 http://localhost:8764/openplt/auth/login 刷新tocken 地址 http://localhost:8764/openplt/auth/refresh_token,详情参考 https://www.jb51.net/article/133832.htm 原始作者
资源推荐
资源详情
资源评论
收起资源包目录
jwt springcloud (309个子文件)
WebSecurityConfig.class 8KB
RefreshTockenController.class 7KB
LoginAuthenticationProvider.class 5KB
TokenFactory.class 5KB
LoginProcessingFilter.class 5KB
TokenAuthenticationProvider.class 4KB
TokenAuthenticationProcessingFilter.class 4KB
AwareAuthenticationSuccessHandler.class 4KB
SkipPathRequestMatcher.class 3KB
RefreshToken.class 3KB
AwareAuthenticationFailureHandler.class 3KB
RawAccessToken.class 2KB
AuthenticationToken.class 2KB
UserContext.class 2KB
ErrorResponse.class 2KB
TokenProperties.class 1KB
ErrorCode.class 1KB
WebUtil.class 1KB
RoleEnum.class 1KB
RestAuthenticationEntryPoint.class 1KB
HeaderTokenExtractor.class 1KB
Scopes.class 1KB
UserRoleService.class 1KB
ExpiredTokenException.class 1KB
UserInfo.class 894B
LoginRequest.class 880B
AccessToken.class 778B
PasswordEncoderConfig.class 735B
UserRole.class 722B
GatewayApplication.class 701B
UserInfoService.class 671B
BloomFilterTokenVerifier.class 663B
InvalidTokenException.class 662B
ApplicationTests.class 598B
AuthMethodNotSupportedException.class 570B
TokenExtractor.class 213B
TokenVerifier.class 192B
Token.class 169B
.gitignore 178B
battcn-jwt-service.iml 14KB
battcn-cloud.iml 336B
WebSecurityConfig.java 6KB
RefreshTockenController.java 4KB
LoginProcessingFilter.java 4KB
LoginAuthenticationProvider.java 3KB
TokenFactory.java 3KB
BattcnException.java 3KB
GlobalExceptionHandler.java 3KB
TokenAuthenticationProcessingFilter.java 3KB
AwareAuthenticationSuccessHandler.java 3KB
GlobalExceptionHandler.java 3KB
AwareAuthenticationFailureHandler.java 2KB
TokenAuthenticationProvider.java 2KB
HelloController.java 2KB
GatewayZuulFallback.java 2KB
SkipPathRequestMatcher.java 2KB
AuthenticationToken.java 2KB
HiController.java 2KB
RefreshToken.java 1KB
GatewayZuulFilter.java 1KB
RawAccessToken.java 1KB
TokenProperties.java 1KB
BattcnCloudRibbonApplication.java 1KB
H2Application.java 1KB
HiController.java 1KB
BattcnCloudHelloApplication.java 1KB
FeignServiceErrorDecoder.java 1KB
H1Application.java 1KB
ErrorResponse.java 1019B
BattcnFeignHelloApplicationTests.java 986B
HelloApplication.java 986B
WebUtil.java 983B
HelloClient.java 965B
HeaderTokenExtractor.java 937B
HelloController.java 935B
UserContext.java 929B
Student.java 905B
Student.java 905B
ConsumerApplication.java 878B
RestAuthenticationEntryPoint.java 835B
ProviderApplication.java 820B
ConfigClientApplication.java 784B
FeignRequest.java 778B
HiClient.java 711B
ConsumerApplication.java 710B
ExpiredTokenException.java 685B
LoginRequest.java 657B
ErrorResponseEntity.java 654B
UserRoleService.java 641B
UserInfo.java 631B
TestController.java 561B
HiController.java 513B
BattcnFeignHiApplication.java 512B
ConfigServerApplication.java 510B
AccessToken.java 496B
PasswordEncoderConfig.java 476B
ZuulApplication.java 474B
ResponseCode.java 473B
UserRole.java 472B
FooConfiguration.java 469B
共 309 条
- 1
- 2
- 3
- 4
资源评论
hongyawx
- 粉丝: 2
- 资源: 92
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索tecreate:软件开发的未来之星.zip
- 打标机项目C#源码连接扫码
- 基于SSM的房屋租赁系统的设计与实现
- xyctf:从入门到精通的实用指南.zip
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功