@TOC
OAuth2.0系列博客:
- OAuth2.0系列之基本概念和运作流程(一)
- OAuth2.0系列之授权码模式实践教程(二)
- OAuth2.0系列之简化模式实践教程(三)
- OAuth2.0系列之密码模式实践教程(四)
- OAuth2.0系列之客户端模式实践教程(五)
- OAuth2.0系列之信息数据库存储教程(六)
- OAuth2.0系列之信息Redis存储教程(七)
- OAuth2.0系列之JWT令牌实践教程(八)
- OAuth2.0系列之集成JWT实现单点登录
1、客户端模式简介
1.1 前言简介
在上一篇文章中我们学习了OAuth2的一些基本概念,对OAuth2有了基本的认识,接着学习OAuth2.0授权模式中的客户端模式
ps:OAuth2.0的授权模式可以分为:
- 授权码模式(authorization code)
- 简化模式(implicit)
- 密码模式(resource owner password credentials)
- 客户端模式(client credentials)
客户端模式(client credentials):客户端模式(client credentials)适用于没有前端的命令行应用,即在命令行下请求令牌
1.2 授权流程图
官网图片:
- (A)客户端提供client_id等信息给授权服务器授权服务器身份验证
- (B)授权通过,返回acceptToken给客户端
从调接口方面,简单来说:
- 第一步: 获取token
http://localhost:8888/oauth/token?client_id=cms&client_secret=secret&grant_type=client_credentials&scope=all - 第二步:拿到acceptToken之后,就可以直接访问资源
http://localhost:8084/api/userinfo?access_token=${accept_token}
2、例子实践
2.1 实验环境准备
- IntelliJ IDEA
- Maven3.+版本
新建SpringBoot Initializer项目,可以命名password
主要是想引入:
1 | 复制代码 <dependency> |
2.2 OAuth2.0角色
前面的学习,我们知道了OAuth2.0主要包括如下角色,下面通过代码例子加深对理论的理解
- 资源所有者(Resource Owner)
- 用户代理(User Agent)
- 客户端(Client)
- 授权服务器(Authorization Server)
- 资源服务器(Resource Server)
生产环境、资源服务器和授权服务器一般是分开的,不过学习的可以放在一起
定义资源服务器,用注解@EnableResourceServer;
定义授权服务器,用注解@EnableAuthorizationServer;
2.3 OAuth2.0配置类
1 | 复制代码package com.example.oauth2.clientcredentials.config; |
2.4 Security配置类
为了测试,可以进行简单的SpringSecurity
1 | 复制代码package com.example.oauth2.clientcredentials.config; |
2.5 功能简单测试
接口测试,要用POST方式,在postman测试,response_type参数传client_credentials:
注意配置一下请求头的授权参数,username即client_id,password即client_secret
代码方式请求,可以进行如下封装,即进行base64加密
1 | 复制代码HttpHeaders headers = new HttpHeaders(); |
拿到token直接去调业务接口:
http://localhost:8888/api/userinfo?access_token=61b113f3-f1e2-473e-a6d7-a0264bfdfa8d
例子代码下载:code download
本文转载自: 掘金