adhocore/goic
GOIC,Go Open ID Connect,是Golang的OpenID connect客户端库。
它支持OpenID Connect规范的授权代码流。
它还不支持refresh_token grant类型,这将在以后添加。
它是一个周末黑客项目,正在进行中,还没有准备好生产。
安装
go get github.com/adhocore/goic
使用方法
在你的服务器中决定一个端点(又称URI),你希望goic 拦截并添加OpenID Connect流。
比方说/auth/o8 。然后在它后面加上提供者的名字。
你的服务器应该支持的所有OpenID提供者都需要一个唯一的名字,每个
提供者都得到一个URI,比如/auth/o8/<name> 。例子。
| 提供者 | 名称 | OpenID URI |
|---|---|---|
| 谷歌 | 谷歌 | /auth/o8/google |
| 微软 | 微软 | /auth/o8/microsoft |
所有提供者必须为OpenID自动发现提供.知名的配置。
准备好OpenID提供者的凭证(客户ID和秘密)。
对于谷歌,请检查这个。
要使用下面的例子,你需要导出GOOGLE_CLIENT_ID 和GOOGLE_CLIENT_SECRET 环境变量。
你还需要在提供者控制台/仪表板上配置应用域和重定向URI。
(重定向URI与上表中的OpenID URI相同)。
下面是一个示例代码,但你可以用它作为参考,而不是完全复制/粘贴它。
package
有了这样的代码后,建立二进制文件 (go build) 并运行服务器程序 (./<binary>) 。
你需要将Login with <provider> 按钮指向https://localhost/auth/o8/<provider> ,以便你的终端用户使用。
比如说。
<
整个流程是由GOIC为你管理和处理的,在成功验证后,
你将能够通过g.UserCallback ,在你的回调中收到用户和令牌的信息!
这就是你保存用户数据的地方,设置一些cookie等等。
稍后查看实例目录,因为当GOIC有新的功能时,它将被更新
。
这里的例子和讨论都是假设
localhost,所以要根据你的域名做相应的调整。
演示
GOIC 已经在开源项目adhocore/urlsh中实现。
验证成功后,您的信息会以JSON格式回馈给您,但不会保存在服务器中(小指承诺)。
TODO
- 支持刷新令牌 grant_type
- 测试和更多的测试
- 发布稳定版本
- 支持OpenID
Implicit Flow
许可证
©MIT| 2021-2099, Jitendra Adhikari
鸣谢
发布管理:请。
其他项目
我的其他golang项目,你可能会觉得有趣和有用。
- gronx- 轻量级的、快速的、无依赖性的Cron表达式解析器(到期检查器)、任务调度器和/或Golang的守护程序(在V1.13及以上版本测试)和独立的使用。
- urlsh- URL缩短器和书签服务,具有用户界面、API、缓存、点击计数器和转发器,后端使用postgres和redis,前端使用bulma;有web和cli客户端。
- 快速- 从终端轻松而舒适地检查你的网速