└─java└─claroja│  Springsecurityoauth2DemoApplication.java│├─config│      AuthorizationServerConfig.java│      ResourceServerConfig.java│      SecurityConfig.java│├─controller│      UserController.java│└─serviceUserService.java

AuthorizationServerConfig.java

package claroja.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {@Autowiredprivate PasswordEncoder passwordEncoder;@Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {clients.inMemory()//客户端ID.withClient("client")//秘钥.secret(passwordEncoder.encode("clientp"))//重定向地址.redirectUris("http://www.baidu.com")//授权范围.scopes("all")//模式.authorizedGrantTypes("authorization_code");}
}

ResourceServerConfig.java

package claroja.config;import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().requestMatchers().antMatchers("/user/**");}
}

SecurityConfig.java

package claroja.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/oauth/**","/login/**","/logout/**").permitAll().anyRequest().authenticated().and().formLogin().permitAll().and().csrf().disable();}@Beanpublic PasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder();}}

UserController.java

package claroja.controller;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/getCurrentUser")public Object getCurrentUser(Authentication authentication) {return authentication.getPrincipal();}}

UserService.java

package claroja.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;@Service
public class UserService implements UserDetailsService {@Autowiredprivate PasswordEncoder passwordEncoder;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {String password = passwordEncoder.encode("admin");return new User(username, password, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));}
}

Springsecurityoauth2DemoApplication.java

package claroja;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Springsecurityoauth2DemoApplication {public static void main(String[] args) {SpringApplication.run(Springsecurityoauth2DemoApplication.class, args);}}

Spring Security Oauth2 (二) 代码 授权码模式相关推荐

  1. Spring Security OAuth2.0认证授权知识概括

    Spring Security OAuth2.0认证授权知识概括 安全框架基本概念 基于Session的认证方式 Spring Security简介 SpringSecurity详解 分布式系统认证方 ...

  2. Spring Security OAuth2.0认证授权五:用户信息扩展到jwt

    历史文章 [Spring Security OAuth2.0认证授权一:框架搭建和认证测试] [Spring Security OAuth2.0认证授权二:搭建资源服务] [Spring Securi ...

  3. Spring Security OAuth2.0认证授权三:使用JWT令牌

    历史文章 [Spring Security OAuth2.0认证授权一:框架搭建和认证测试] [Spring Security OAuth2.0认证授权二:搭建资源服务] 前面两篇文章详细讲解了如何基 ...

  4. Spring Security+Oauth2四种授权模式

    上一篇文章:Spring Security + OAuth2.0项目搭建:https://blog.csdn.net/qq_42402854/article/details/123057625 接着认 ...

  5. Spring Security OAuth2.0认证授权

    文章目录 1.基本概念 1.1.什么是认证 1.2 什么是会话 1.3什么是授权 1.4授权的数据模型 1.4 RBAC 1.4.1 基于角色的访问控制 2.基于Session的认证方式 3.整合案例 ...

  6. Spring Security Oauth2 如何自定义授权获取token

    Oauth2的默认授权模式有四种: 授权码模式-authorization_code 密码模式-password 客户端模式-client_credentials 隐式授权模式-implicit 我们 ...

  7. (一)、Spring Security OAuth2 五种授权方式介绍

    更多相关文章请见:Spring Security文章目录 1.简介 OAuth 2.0定义了五种授权方式. RFC规范链接 authorization_code:授权码类型,授权系统针对登录用户下发c ...

  8. andpods授权码订单号分享_不要再让你的接口裸奔了,Boot快速尝试OAuth2密码和授权码模式...

    微服务火热,前后端分离,oauth2 是我们接口调用认证的首选.springboot 天然集成 oauth2,使用非常方便,简单记录下,尝尝鲜. 一.啥是OAuth2 OAuth(开放授权)是一个开放 ...

  9. Oauth2.0认证---授权码模式

    目录: 1.功能描述 2.客户端的授权模式 3.授权模式认证流程 4.代码实现 1.功能描述 OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(au ...

最新文章

  1. linux内核崩溃无日志,教你如何捕捉内核崩溃信息
  2. JVM 监控以及内存分析
  3. OFBiz + Opentaps 目录管理 十三. 配置产品搜索
  4. CRM Fiori launchpad请求响应结果的字段分析
  5. 作者:王亮(1975-),男,中国科学院自动化研究所研究员,博士生导师
  6. 创业奇才:才3年5000元变600万
  7. python 怎么样去txt中提取xml_Python根据XML批量创建TXT并提取信息,python,xml,txt
  8. 微信一键设置“姓氏头像”,学起来!
  9. Linux根据启动程序文件名称进行批量结束任务
  10. L1-001. Hello World-PAT团体程序设计天梯赛GPLT
  11. Load error: undefined path variables 记录一次IDEA崩溃
  12. hsqldb和mysql,Hsqldb简介和基本使用
  13. 操作系统15----80386处理器基础
  14. 给大龄程序员的4种竞争力策略
  15. Debian10安装部署DNS服务-正向解析篇
  16. 青龙面板篇——美团(细致教程 有手就行~)
  17. ssh免密码登录3种解决方法
  18. 来看看未来最有前景的行业
  19. STVD 新建STM8L151工程
  20. 初识Nginx四:nginx代理服务器配置缓存

热门文章

  1. HL7数据类型分析(1)
  2. 观视屏《残疾人郑心意》所想
  3. python写一个完整的小程序_写一个python小程序
  4. SPSS基本操作与使用步骤【详细整理】
  5. (篇十)用结构体数组处理学生成绩、结构体类型函数求平均值
  6. signature=51b3a9ac95339489ef7384c6e21e303f,nginx – Let’s Encrypt的中间证书
  7. Python使用修饰器强制函数只接收关键参数
  8. Python泛型函数与单分发器
  9. 计算机课程教改论文,高职计算机教改的课程设计研究论文
  10. C++ 面向对象程序三大特性之 继承