1. 首页>
  2. 腾讯云代理

如何使用dex搭建一个身份认证系统?

腾讯云 2019年08月19日 浏览101

    腾讯云代理 腾讯云新闻 腾讯云代理 腾讯云直播申请 游戏上云

摘要:

导言

一个成熟的软件系统一般必须有一个可靠的身份认证与权限验证功能。这一块要自研快速实现还是需要花费挺多精力的,幸好开源领域目前已经有不错的解决方案,一般拿过来按项目的实际需求进行一些简单的定制基本就可以实现业务目标了。最近刚好在这方面进行了一些工作,这里将如何实现身份认证及权限验证分两篇博文大概梳理一下,这篇先讲身份认证。

什么是身份认证

身份验证(英语:Authentication)又称“验证”,是指通过一定的手段,完成对用户身份的确认。

身份验证的目的是确认当前所声称为某种身份的用户,确实是所声称的用户。在日常生活中,身份验证并不罕见;比如,通过检查对方的证件,我们一般可以确信对方的身份。虽然日常生活中的这种确认对方身份的做法也属于广义的“身份验证”,但“身份验证”一词更多地被用在计算机、通信等领域。

以上是维基百科的解释,说白了就是用某种方式确保用户是某种身份,这种确保需要保证其它用户没那么容易伪装其身份。一般只有经过身份认证得到可靠的用户身份后,才能基于该身份进行后续的权限验证流程。

实现身份认证系统

一般来说业务系统会专注于业务逻辑的处理,而身份认证相关的功能会放入独立的身份认证系统进行开发维护。要纯自研地完成一套可靠、安全度高的身份认证系统还是比较花费精力的,幸好开源领域目前已经有不错的解决方案,一般拿过来按项目的实际需求进行一些简单的定制基本就可以实现业务目标了。我这里的示例使用dex实现了一个简单的用户认证系统
——https://github.com/jeremyxu2010/demo-dex

运行示例

前提是已经搭建好了go语言的开发环境,并设置好了GOPATH。
然后按以下步骤运行本程序:

image

然后用浏览器访问http://127.0.0.1:8080, 页面会自动跳转至dexserver的登录页面,输入用户名admin@example.com、密码password之后,会跳回dexclient的callback页面http://127.0.0.1:8080/callback。


示例的技术细节

dexserver

这里使用的dexserver是由官方代码直接编译得出的,没有修改任何代码。只不过使用了自定义的配置文件dexserver-config.yaml,这里分析一下这个配置文件。

web段配置的是dexserver的监听地址及HTTPS证书参数,issuer配置的是外部会访问到的系统URL,这两者一般要对应地设置。



telemetry段配置的是监控指标抓取地址,本例中dexserver启动完毕后,可访问——http://127.0.0.1:5558/metrics抓取到该dexserver的监控指标。


storage段配置的是dexserver的存储设置。dexserver在运行时跟踪refresh_tokenauth_codekeyspassword等的状态,因此需要将这些状态保存下来。dex提供了多种存储方案,如etcdCRDsSQLite3PostgresMySQLmemory,总有一款能满足需求。如果要其它需求,还可以参考现有Storage:
https://github.com/dexidp/dex/tree/master/storage
以及文档扩展:
https://github.com/dexidp/dex/blob/master/Documentation/storage.md#adding-a-new-storage-options



阅读原文

相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808