首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

API服务端开发入门(9)实现自己的oauth2 server

前言

但如果你想自己做一个 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了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322B0JBA400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券