基于spring-security-oauth2认证授权服务介绍与使用(二)

  • 1、授权流程及示意图
  • 2、测试oauth2-server认证授权中心
  • 2.1、采用授权码authorization_code模式
  • 2.1.1、 获取Authorization Code
  • 2.1.2、 通过Authorization Code获取Access Token
  • 2.2、采用密码模式
  • 3、测试oauth2-resources-order获取资源服务器的数据

前言】OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。

1、授权流程及示意图


spring security oauth2 授权码 spring security oauth2认证流程_spring security


2、测试oauth2-server认证授权中心

思路:
授权码模式:先获取到 授权码[Authorization Code] -->通过授权码获取access_token --> 此时已授权带着access_token 去访问接口
密码模式:可直接一个请求获取到access_token --> 此时已授权带着access_token 去访问接口

2.1、采用授权码authorization_code模式
2.1.1、 获取Authorization Code

请求方式:get

请求参数[必填]:response_type、client_id、redirect_uri

请求URL:http://localhost:9090/oauth/authorize

完整URL:http://localhost:9090/oauth/authorize?response_type=code&client_id=client_1&redirect_uri=http://www.baidu.com

spring security oauth2 授权码 spring security oauth2认证流程_请求参数_02


访问后跳转到如下图地址登录后–> 回调地址【http://www.baidu.com】

**注意:**此处如果出现一直登录失败,可以考虑换个用户名密码登录后重启服务再登录测试

spring security oauth2 授权码 spring security oauth2认证流程_oauth2_03


spring security oauth2 授权码 spring security oauth2认证流程_oauth2_04


选择Approve后 --> 点击按钮即可进入回调地址页面

spring security oauth2 授权码 spring security oauth2认证流程_Code_05


spring security oauth2 授权码 spring security oauth2认证流程_spring_06


即授权码为:yMfKsK 【注】:授权码只能使用一次

2.1.2、 通过Authorization Code获取Access Token

请求方式:get

请求参数[必填]:grant_type、client_id、client_secret、code、redirect_uri

请求URL:http://localhost:9090/oauth/token

完整URL:http://localhost:9090/oauth/token?grant_type=authorization_code&client_id=client_1&client_secret=123456&code=6Xt0Dz&redirect_uri=http://www.baidu.com&scope=all

spring security oauth2 授权码 spring security oauth2认证流程_spring security_07


获取的access_token:1a0eb010-b6a6-4ac7-a3d9-37b0d90517ea

2.2、采用密码模式

密码模式相对简单点,直接使用postman访问了。

请求方式:post

请求参数[必填]:grant_type、username、password、client_id、client_secret

请求路径:http://localhost:9090/oauth/token

spring security oauth2 授权码 spring security oauth2认证流程_oauth2_08


获取到access_token:1a0eb010-b6a6-4ac7-a3d9-37b0d90517ea

3、测试oauth2-resources-order获取资源服务器的数据

如我们要将获取订单信息的简单接口对外开放,提供数据给其他对外服务器访问,就需要获取 access_token才能访问。

http://localhost:9091/api/order/getOrder?Authorization=bearer 1a0eb010-b6a6-4ac7-a3d9-37b0d90517ea

spring security oauth2 授权码 spring security oauth2认证流程_Code_09