0.4 基于数据库和redis的模式
0.4.1 授权码模式
案例:ZJJ_SpringCloud_Oauth2_2020/06/16_19:55:55_bau11 |
---|
项目yml配置 切换db模式
flag: db # memory是内存模式 , db 是数据库模式 |
---|
修改oauth_client_details表的配置信息
直接发起get请求,注意redirect_uri参数需要和数据库oauth_client_details里面的配置一样才行.
http://localhost:9999/oauth/authorize?
response_type=code&client_id=portal_app&redirect_uri=http://www.baidu.com&state=abc
get请求 http://localhost:9999/login
直接输入用户名和密码 用户名是zhangsan 密码是 123456
0.4.1.1 获取到code,去换取token
http://localhost:9999/oauth/token(Post请求)
redirect_uri 是 和配置的回调地址要一模一样
grant_type 是固定写死的
code 是从认证那里登录成功返回给你的code
0.4.1.2 尝试访问别的微服务
案例:ZJJ_SpringCloud_Oauth2_2020/06/16_20:06:58_gn5tv |
---|
启动这个微服务, 然后用授权码模式获取的access_token 去访问这个服务
post请求:
http://localhost:8080/order/selectOrderInfoById/1
请求头 Authorization 携带 bearer xxxxxxxxxx 这个xxxxxx就是access_token
就能访问成功了. 注意Authorization 的type不要写
Gateway实现Oauth2
我们的微服务不再做权限控制,把权限控制功能放到网关上.
用户通过浏览器 携带clientId 等等信息请求token, 网关直接转发请求token的资源给认证中心, 然后返回token.
用户通过浏览器访问服务的时候,会携带token,token在网关那里进行校验,校验通过就访问指定的服务,校验失败就提示前端权限不足.
0.4.2 jwt模式
案例:ZJJ_SpringCloud_Oauth2_2020/06/17_12:28:06_3ihi7 |
---|
启动好项目之后开始测试:
访问
http://localhost:8888/oauth/token
就能获取到结果
测试token是否好用
启动sso-product-jwt-server项目
Authorization用上面的access_token
访问成功是这个,如果访问失败的话就会抛出异常出来.