Open-OAuth2Playground:开箱即用的开源版 OAuth2 在线调试服务
背景
在 用 Go 写一个轻量级的 ldap 测试工具 里,我们讨论过为了更好的测试 LDAP 的服务情况,我们需要一个方便的 LDAP 测试和调试工具,对于 OAuth2 服务同样如此,并且如果我们的开放平台授权基于 OAuth2 协议,那么 OAuth2 Playground 也是非常重要的面向开发者的自服务基础设施。以详尽的文档和丰富的自服务能力构建开放平台,而非依赖于人工的响应支持,这也一直是我们的梦想和目标。
新的轮子
业内其实是有一些 OAuth2 Playground 的,例如 OKTA 的OAuth 2.0 Playground ,非常适合 OAuth2 协议的学习,但是他只能在 OKTA 的 OAuth2 服务上运行,并不能配合自己的 OAuth2 服务器调试。
谷歌也提供了一个非常棒的 OAuth 2.0 Playground ,除了可以在线调试谷歌的 OAuth2 服务之外,还可以将 OAuth2 配置为自己的私有服务,并调试自己的 OAuth2 服务器,非常的好用。然而谷歌的 OAuth2 Playground 仅支持 Authorization Code 模式,并不能适用所有场景下的 OAuth2 调试,并且谷歌显然还存在“不可抗力”的问题,并不适合作为通用的 OAuth2 调试方案~
所以这是一个新的轮子,他的目标是针对私有的 OAuth2 Server,提供 OAuth2 协议的在线调试能力。
对于 OAuth2 的学习者,它也可以在本地单机运行,并配合 Apereo CAS 等支持 OAuth2 协议的开源 Server,学习 OAuth2 协议。
对于 OAuth2 Server 的提供者而言,他可以配合 OAuth2 的文档一同发布,为你的开发者提供自服务式的调试能力,帮助你建设自己的”开放“平台。
然后我们把这个服务也开源了,欢迎来到 ECNU/Open-OAuth2Playground
设计理念
安全性
考虑到我们的主要场景是为了 OAuth2 Server 的发布者,作为配套文档的自服务调试平台开放给开发者,因此平台的安全性是很重要的一环。区别于 Google OAuth2.0 Playground,Open-OAuth2Playground 不允许调试的开发者在前端修改 OAuth2 的配置,只能允许后端的服务维护者设定 OAuth2 Server 的各项 endpoint。
同时由于包含接口调试的功能,Open-OAuth2Playground 实际上起到了接口请求代发的作用。为了避免平台成为恶意的请求发送者,Open-OAuth2Playground 要求配置 trust_domain 参数,仅允许的域名才可以发送请求——本质上也是一种跨域的安全保护。
扩展性
Open-OAuth2Playground 计划支持所有的 OAuth2.0 Flow,当然现在只有一部分模式。后续将以标签的形式扩展支持 Implicit,Device 等其他模式。
使用 OAuth2 Playground
配置
首先需要确定 OAuth2 的 3 个重要地址,发起授权的地址,换取 Token 的地址,以及获得了 Token 以后,查询用户基本信息的接口地址。对于 Apereo CAS 而言,这三个地址默认如下所示:
其次,将 OAuth2 Server 的域名,和其他可能需要调试的域名(如果 API 接口的域名和 OAuth2 服务的域名不是同一个的话)添加到 trust_domain 中。例如
更详细的配置说明详见 ECNU/Open-OAuth2Playground
本地运行
Windows
如果只需要在 Windows 上运行测试,在 release 中下载最新的安装包,解压后在命令行中 Open-OAuth2Playground.exe
,修改 cfg.json
配置为自己的 OAuth2 Server 后,访问 http://localhost 即可。
Linux
在 release 中下载最新的安装包,修改 cfg.json
配置为自己的 OAuth2 Server 后,解压后直接运行即可。
访问你服务器的 80 端口即可使用。
开始调试
Open-OAuth2Playground 的使用非常简单,当服务发布以后,开发者只需要输入他所分配的 client_id 和 client_secret 即可,其他所有的参数都会自动生成,如图所示,填入 client_id 和 client_secret 后,点击 Go 即可发起 Authorization Code 授权流程。
授权通过后,根据协议将携带 code 回到 redirect_uri,可以看到 code 已经被自动填入了。我们点击获取 token 即可。
点击获取 token 后,可以在右侧的 request/response 内看到详细的请求内容,这对开发者的调试工作有非常大的帮助,在左侧也可以看到 ,access_token 已经获取到,并且也已经自动填充了 refresh_token,如果需要测试 refresh_token 的功能,同样在其右侧点击获取 token 即可。
最后是接口调试,access_token 已经自动填入,调试接口即可。
鸣谢
本项目大量借鉴了 Google 的 OAuth 2.0 Playground 设计风格,感谢 Google。
以上
版权声明: 本文为 InfoQ 作者【冯骐】的原创文章。
原文链接:【http://xie.infoq.cn/article/5586b20bc281311106e79fcc2】。
本文遵守【CC BY-SA】协议,转载请保留原文出处及本版权声明。
评论