写点什么

Open-OAuth2Playground:开箱即用的开源版 OAuth2 在线调试服务

作者:冯骐
  • 2023-07-16
    上海
  • 本文字数:1956 字

    阅读完需:约 6 分钟

背景

用 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 而言,这三个地址默认如下所示:


	"endpoints": {		"authorization": "http://cas.example.org/cas/oauth2.0/authorize",		"token": "http://cas.example.org/cas/oauth2.0/accessToken",		"userinfo": "http://cas.example.org/cas/oauth2.0/profile"	},
复制代码

其次,将 OAuth2 Server 的域名,和其他可能需要调试的域名(如果 API 接口的域名和 OAuth2 服务的域名不是同一个的话)添加到 trust_domain 中。例如

"trust_domain": ["cas.example.org", "localhost"],
复制代码


更详细的配置说明详见 ECNU/Open-OAuth2Playground

本地运行

Windows

如果只需要在 Windows 上运行测试,在 release 中下载最新的安装包,解压后在命令行中 Open-OAuth2Playground.exe ,修改 cfg.json 配置为自己的 OAuth2 Server 后,访问 http://localhost 即可。

Linux

在 release 中下载最新的安装包,修改 cfg.json 配置为自己的 OAuth2 Server 后,解压后直接运行即可。

mkdir Open-OAuth2Playgroundcd Open-OAuth2Playground/wget https://github.com/ECNU/Open-OAuth2Playground/releases/download/v0.2.0/Open-OAuth2Playground-linux-0.2.0.tar.gztar -zxvf Open-OAuth2Playground-0.2.0-linux-amd64.tar.gz./control start
复制代码

访问你服务器的 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。


以上


发布于: 刚刚阅读数: 6
用户头像

冯骐

关注

教育行业码农 2020-06-19 加入

一个教育行业的码农

评论

发布
暂无评论
Open-OAuth2Playground:开箱即用的开源版OAuth2在线调试服务_OAuth 2.0_冯骐_InfoQ写作社区