基于thinkphp5框架搭建OAuth2.0服务端
IoT Boot Camp系列课程是由TorchIoTBootCamp团队发起,广大IoT领域的爱好者共同参与的项目。旨在高效率、高质量地传播IoT领域的相关知识,以促进物与物,人与人,人与信息的连接。
点击这里,观看博主更多有趣视频教程
点击这里,学习更多知识
OAuth是用于服务端与客户端授权登录的协议,OAuth2.0是OAuth的第二个版本,关于OAuth2.0的基础知识,可以阅读阮一峰的一篇博文,对OAuth2.0的介绍非常详细,只要理解了OAuth2.0的授权过程,在自己网站实现OAuth2.0并不复杂。
本文将讲解如何基于thinkphp5.1的框架实现OAuth2.0的服务端。
1 环境搭建
首先确保你已经搭建好了服务器,并且已经能够正常访问你的服务器。我的环境Xampp+thinkphp5.1.
2 安装OAuth2.0 php包
你页根据OAuth2.0的协议自己去实现代码,但是最快捷最安全最可靠的方法当然是移植第三方OAuth2.0包。OAuth官网提供了很多第三方包,详见网站https://oauth.net/code/, 如下图,因为thinkphp是基于php语言,因此我选择了PHP下第一个。
点击PHP OAuth2 Server会跳入源码下载库,将其下载到电脑即可。
下载后解压,我们只需要将里面/src/OAuth文件夹整个拷贝到tp5/extend/目录下,就可以自动注册对应的命名空间。之后我们就可以使用\OAuth2…的方式去使用OAuth里面的任何方法。
3 实现OAuth服务端
3.1 创建数据库
由于我们之前下载的OAuth包有用到很多数据表,所以需要按照其要求创建好数据表,创建代码如下:
CREATE TABLE oauth_clients (
client_id VARCHAR(80) NOT NULL,
client_secret VARCHAR(80),
redirect_uri VARCHAR(2000),
grant_types VARCHAR(80),
scope VARCHAR(4000),
user_id VARCHAR(80),
PRIMARY KEY (client_id)
);
CREATE TABLE oauth_access_tokens (
access_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VAR