一篇搞定Spring Security认证

认证简述

MateCloud采用OAuth2协议,实现统一认证,官方文档:https://oauth.net/2/

OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。

引用依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

开发版本

目前文档编写时基于当前最新版本,Spring Boot 2.3.5.RELEASE、Spring Security 5.3.5.RELEASE

认证模式

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。oAuth 2.0 定义了四种授权方式。

  • implicit:简化模式,不推荐使用
  • authorization code:授权码模式
  • resource owner password credentials:密码模式
  • client credentials:客户端模式

具体四种认证模式请自行百度科普

项目实战

下面就以swagger的方式实战演示密码登录和短信验证码登录两种方式获取token。

文档地址:https://gateway.mate.vip/doc.html

1.密码方式登录

选择mate-uaa文档->找到Oauth2管理->用户登录Post

选择调试模式,并参考图例填写信息:

在请求头部,Authorization项填写:Basic bWF0ZTptYXRlX3NlY3JldA==,如下图所示:

填写完这两项,点击发送按钮,则成功从后台获取token。

2.短信验证码方式登录

2.1 下发验证码\n\nmate-uaa模块认证管理->手机验证码下发

点击发送按钮后,提示发送成功。

现代码里写成固定值:1188

2.2 获取Token

设置grant_type为sms,则为短信验证码方式登录。

点击发送按钮,获取token如下