SpringCloud Alibaba微服务实战十四 - SpringCloud Gateway集成Oauth2

在网关集成Oauth2.0后,我们的流程架构如上。主要逻辑如下:

1、客户端应用通过api网关请求认证服务器获取access_token http://localhost:8090/auth-service/oauth/token

2、认证服务器返回access_token

{

“access_token”: “f938d0c1-9633-460d-acdd-f0693a6b5f4c”,

“token_type”: “bearer”,

“refresh_token”: “4baea735-3c0d-4dfd-b826-91c6772a0962”,

“expires_in”: 43199,

“scope”: “web”

}

3、客户端携带access_token通过API网关访问后端服务

file

4、API网关收到access_token后通过 AuthenticationWebFilter 对access_token认证

5、API网关转发后端请求,后端服务请求Oauth2认证服务器获取当前用户

在前面文章中我们搭建好了单独的Oauth2认证授权服务,基本功能框架都实现了,这次主要是来实现第四条,SpringCloud 整合 Oauth2 后如何进行access_token过滤校验。

代码示例


引入组件

org.springframework.boot

spring-boot-starter-security

org.springframework.security

spring-security-oauth2-resource-server

org.springframework.cloud

spring-cloud-starter-oauth2

org.springframework.boot

spring-boot-starter-jdbc

mysql

mysql-connector-java

主要引入跟oauth2相关的jar包,这里还需要引入数据库相关的jar包,因为我们的token是存在数据库中,要想在网关层校验token的有效性必须先从数据库取出token。

bootstrap.yml 配置修改

spring:

application:

name: cloud-gateway

datasource:

type: com.zaxxer.hikari.HikariDataSource

url: jdbc:mysql://xx.0.xx.xx:3306/oauth2_config?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false

username: xxxxx

password: xxxxxxx

driver-class-name: com.mysql.jdbc.Driver

主要配置oauth2的数据库连接地址

自定义认证接口管理类

在webFlux环境下通过实现 ReactiveAuthenticationMan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值