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
