前言
但如果你想自己做一个 oauth2 server,让别人使用你的账号密码来登陆,那么本文就应该是你的切入点。
PS:为什么需要搭建自己的 oauth2 server?假设你的产品提供接口服务,允许其他开发者来拓展。
项目简介
bshaffer/oauth2-demo-php,是一套基于 oauth2 规范实现的客户端、服务端开源代码。借助这个类库,你可以学习oauth2的流程,也可以开发自己的客户端或者服务端。
项目地址:https://github.com/bshaffer/oauth2-demo-php
克隆项目
当然,你也可以直接去github下载它的zip包。
下载依赖
composer安装好之后,执行此命令即可
项目配置
将data目录开放权限
chmod -R 0777 ./data
该版本demo使用sqlite作为数据库,需要 data 目录的rwx权限。
定义配置文件
cp data/parameters.json.dist data/parameters.json
使用PHP内置服务器
如果你使用PHP内置服务器,就很简单了(但因为这是单线程运行的,小心阻塞)
php -S localhost:8080 & php -S localhost:8081
启动两个PHP内置的服务器,端口分别是 8080 和 8081
nginx(如果不想用内置服务器)
本文都是以nginx作为例子。首先修改 hosts,添加一条虚拟域名,比如 oauth2.com,指向到 127.0.0.1。
在nginx 中以该虚拟域名为基础,添加一个网站配置,且设置一条 rewrite 规则:
这个规则是为了满足 symfony 框架的路由配置。
测试
输入 http://oauth2.com 能看到项目首页,点击auth等链接能成功跳转(如果nginx配置失败,无法跳转)
授权流程演示
点击 “Authorization Code” 下的 authorize 按钮,进入授权确认页。
点击 yes 就授权成功,并返回 code。(code的含义请参考上一篇文章)
继续点击 make a token request,继续发起请求,用code换accessToken(注意code只能用一次)
继续点击 make a response request,继续发起请求,用accessToken去换取用户信息。
总结
以上的所有请求,客户端和服务端均来自 oauth2-demo 这份代码,也就是说:它包含服务端功能。
只要你继续解读下去,就可以借此搭建自己的oauth2 server了。
领取专属 10元无门槛券
私享最新 技术干货