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

经验分享 程序员 微信小程序 职场和发展