Spring SAS 0.2.0 上手教程
正式上市 || SAS 0.2.0 上手教程
背景
-
Spring Authorization Server (以下简称 SAS)是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目,旨在替代原有的 Spring Security OAuth Server。 经过半年的开发和孵化,目前已经发布了 0.2.0 版本,已支持授权码、客户端、刷新、注销等 OAuth 协议。 目前 SAS 项目已经迁移至官方正式仓库维护,成为官方的正式子项目。 笔者年初 《新年开箱 | Spring Authorization Server 全新的授权服务器上手 》文章已经不适配当前版本,所以特写整合上手文章。 本文环境基于 Spring Boot 2.5.3 && SAS 0.2.0
开始上手
1. 核心依赖
-
这里需要 SAS 、Security, 注意看注释
<!-- 注意groupId 正式仓库没有 experimental ,特别注意不然下载不到jar--> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-authorization-server</artifactId> <version>0.2.0</version> </dependency> <!--提供 form 认证--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2. 配置 security 安全认证
@EnableWebSecurity public class DefaultSecurityConfig { @Bean UserDetailsService users() { UserDetails user = User.builder() .username("lengleng") .password("{noop}123456") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } @Bean SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests(authorizeRequests -> authorizeRequests.anyRequest().authenticated() ) .formLogin(withDefaults()); return http.build(); } }
3. 配置 SAS 服务器
测试运行
通过以上配置即可搭建完成 SAS 服务端,我们以授权码模式测试
-
浏览器访问如下链接,会重定向至登录页
http://localhost:3000/oauth2/authorize?client_id=pig&client_secret=pig&response_type=code&redirect_uri=https://pig4cloud.com
-
输入账号密码后,会携带 code 自动回调至目标页面
-
使用 code 换 token
-
刷新 token
撤销令牌
-
通过 access_token
-
通过 refresh_token
curl --location --request POST http://localhost:3000/oauth2/revoke --header Authorization: Basic cGlnOnBpZw== --header Content-Type: application/x-www-form-urlencoded --data-urlencode token=ku4R4n7YD1f584KXj4k_3GP9o-HbdY-PDIIh-twPVJTmvHa5mLIoifaNhbBvFNBbse6_wAMcRoOWuVs9qeBWpxQ5zIFrF1A4g1Q7LhVAfH1vo9Uc7WL3SP3u82j0XU5x --data-urlencode token_type_hint=refresh_token
本文源码: https://github.com/lltx/auth-server-demo