# springcloudAction **Repository Path**: lgtnliu/springcloudAction ## Basic Information - **Project Name**: springcloudAction - **Description**: springcloud整合实战项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2021-01-21 - **Last Updated**: 2021-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springcloudAction #### 项目介绍 springcloud整合实战项目 基于oauth2.0+redis+token的认证 password模式获取token: [截图1]]! (https://gitee.com/niugangxy/springcloudAction/blob/master/images/4fbf98d5ea4877cf58eab4a178cae9f.png) #### 软件架构 oauth2.0+token+redis认证 #### 基于密码模式的获取access_token 1.获取token ![输入图片说明](https://images.gitee.com/uploads/images/2019/0116/111713_26941539_1746644.png "屏幕截图.png") 2.通过刷新token获取新token 之前保存在redis中的refresh_token和access_token也会被删除 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0116/111706_a619c259_1746644.png "屏幕截图.png") 3.通过access_token访问受保护的资源 a.输入access_token的情况 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0116/111901_f27358d3_1746644.png "屏幕截图.png") b.没输入access_token的情况 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0116/112000_53495134_1746644.png "屏幕截图.png") #### 基于授权模式的 - 未优化前登陆 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/165412_ea7ea65f_1746644.png "屏幕截图.png") 获取code ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/165425_4c2ebdbb_1746644.png "屏幕截图.png") 获取token根据上面返回的code和其他参数 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/165547_232a565c_1746644.png "屏幕截图.png") - 登陆优化和统一认证登陆 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/165937_92a89275_1746644.png "屏幕截图.png") ![](https://images.gitee.com/uploads/images/2019/0118/165735_1a1c94e9_1746644.png "屏幕截图.png") spring自带授权页面这个可以优化,具体地址为 > https://rensanning.iteye.com/blog/2386553 > https://conkeyn.iteye.com/blog/2296406 自定义授权等页面 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/165746_f934e1ec_1746644.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2019/0118/170002_dd3b4164_1746644.png "屏幕截图.png") > 琐碎: User must be authenticated with Spring Security before authorization can be completed. security配置的优先级比认证首先级低 ,并且没有授权(跳转登录面) security配置首先级必须高于Authorization ```java @Configuration @EnableWebSecurity @Order(2) public class SecurityConfiguration extends WebSecurityConfigurerAdapter { } @EnableAuthorizationServer @EnableResourceServer @Order(6) public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { } ``` ```java //第一版 @Override protected void configure(HttpSecurity http) throws Exception { //http.authorizeRequests().antMatchers("/oauth/**").permitAll(); 之前的配置 http.authorizeRequests().antMatchers("/oauth/**").authenticated().and().formLogin().permitAll(); } //第二版 http.requestMatchers().antMatchers("/authentication/login","/login","/authentication/failed").antMatchers("/oauth/**").and().authorizeRequests().anyRequest().authenticated().and().formLogin().loginPage("/authentication/login").failureUrl("/authentication/failed").loginProcessingUrl("/login").permitAll() // 自定义登录页面,这里配置了 loginPage, 就会通过 // LoginController 的 login 接口加载登录页面 .and().csrf().disable(); ``` 并且security配置中必须指定登录页面,到时候先去登录 (DefaultLoginPageGeneratingFilter 组装登录页面相关的类 UsernamePasswordAuthenticationFilter 接收参数开始验证验证类----》ProviderManager----》AbstractUserDetailsAuthenticationProvider---》DaoAuthenticationProvider------》UserDetailsServiceImpl(最终是自己定义的验证类)) spring 授权端点类 AuthorizationEndpoint 该端点在AuthorizationEndpoint中,但是通过注释可以发现 该端点应该是安全的,以便只有完全认证的用户才能访问它(作为最低要求),因为它代表了有效用户代表他或她行事的请求。 即访问该端点的要求必须是完全认证的用户(则需要用户登录) WhitelabelApprovalEndpoint 用户授权确认类 JdbcClientDetailsService 数据的clientId----->配置存在数据库中 #### 基于授权模式方案优化 > 默认可能返回的用户信息比较少,优化方案后修改客户端想要的用户信息 ![输入图片说明](https://images.gitee.com/uploads/images/2019/0119/131909_ac95b4dc_1746644.png "屏幕截图.png") #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)