author2是一个开放标准,该标准允许用户让第三方用户访问该用户在某一网站上存储的私密资源,例如头像、照片、视频等。
author2有几个基本角色:
- 资源所有者:即用户
- 客户端:但三方应用
- 授权服务器:用来验证用户提供的信息是否正确,并返回一个令牌
- 资源服务器:提供给用户资源的服务器
授权模式:
- 授权码模式:功能最完整,流程最严谨的。通过客户端服务器与授权授权服务器交互。国内常见的第三方平台登入就是使用这个功能实现的。
- 简化模式:不需要客户端服务器的参与,直接在浏览器中向授权服务器申请令牌,一般网站是纯静态页面的,可以使用这个方法。
- 密码模式:直接把用户名和密码告诉客户端,客户端使用这些信息向授权服务器申请令牌。
- 客户端模式:客户端使用自己的名义而不是用户的名义向服务器一共申请授权。
接下来开始springboot整合author2,github:https://github.com/fengqing11/springboot-oauth2
创建项目,依赖如下:
由于springboot中的oauth协议实在spring security的基础上完成的,因此需要添加spring security依赖。
令牌存储在redis缓存服务器上,同时redis具有过期功能,很适合令牌的存储,因此也加入redis的依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sang</groupId>
<artifactId>oauth2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>oauth2</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>