Golang OpenID连接客户端

583 阅读2分钟

adhocore/goic

Latest Version
Software License
Go Report
Donate 15
Donate 25
Donate 50
Tweet

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_IDGOOGLE_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中实现。

访问urlssh.xyz/auth/o8/goo…

验证成功后,您的信息会以JSON格式回馈给您,但不会保存在服务器中(小指承诺)。


TODO

  • 支持刷新令牌 grant_type
  • 测试和更多的测试
  • 发布稳定版本
  • 支持OpenIDImplicit Flow

许可证

©MIT| 2021-2099, Jitendra Adhikari

鸣谢

发布管理:


其他项目

我的其他golang项目,你可能会觉得有趣和有用。

  • gronx- 轻量级的、快速的、无依赖性的Cron表达式解析器(到期检查器)、任务调度器和/或Golang的守护程序(在V1.13及以上版本测试)和独立的使用。
  • urlsh- URL缩短器和书签服务,具有用户界面、API、缓存、点击计数器和转发器,后端使用postgres和redis,前端使用bulma;有web和cli客户端。
  • 快速- 从终端轻松而舒适地检查你的网速

GitHub

github.com/adhocore/go…