文章目录
本文将详细介绍如何使用最新版本的Spring Boot搭建一个基于OAuth2的认证授权服务。我们将使用Spring Security OAuth2来简化构建过程。
一、环境准备
- JDK 1.8或更高版本
- Maven 3.5或更高版本
- Spring Boot 2.6.x(本文使用的是2.6.3版本)
- Spring Security 5.6.x(与Spring Boot版本兼容)
二、创建Spring Boot项目
1. 使用Spring Initializr
访问Spring Initializr,填写以下信息:
- Project: Maven Project
- Language: Java
- Spring Boot: 选择最新版本(本文为2.6.3)
- Group: com.example
- Artifact: oauth2-demo
- Name: oauth2-demo
- Description: Spring Boot OAuth2 Demo
- Packaging: Jar
- Java: 8(或更高版本)
在Dependencies部分,添加以下依赖: - Spring Web
- Spring Security
- Spring Data JPA
- H2 Database (用于演示,实际项目中可以使用MySQL、PostgreSQL等)
- Thymeleaf (用于前端页面展示)
点击Generate按钮,下载生成的项目压缩包,并解压。
2. 使用IDE导入项目
使用IntelliJ IDEA或Eclipse等IDE导入项目。
三、配置数据源
在application.properties
文件中配置H2数据库:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
四、添加用户实体和存储
创建一个用户实体User.java
:
package com.example.oauth2demo.entity;
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// 省略getter和setter方法
}
创建一个用户存储接口UserRepository.java
:
package com.example.oauth2demo.repository;
import com.example.oauth2demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
五、配置Spring Security
创建一个配置类WebSecurityConfig.java
:
package com.example.oauth2demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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 com.example.oauth2demo.repository