探索身份验证新境界:Dex - 联邦OpenID Connect提供者
Dex是一个基于OpenID Connect的身份服务,为其他应用程序提供统一的认证入口。通过其创新的“连接器”系统,Dex能够将认证任务委托给LDAP服务器、SAML提供商或者如GitHub、Google和Active Directory这样的成熟身份管理平台。
ID令牌:安全身份证明的核心
Dex的主要功能是生成JSON Web Tokens(JWT)作为ID令牌,这是OAuth2协议的一部分。这些令牌在授权响应中返回,证明了终端用户的标识。例如:
eyJhbGciOiJSUzI1NiIsImtpZCI6IjlkNDQ3NDFmNzczYjkzOGNmNjVkZDMyNjY4NWI4NjE4MGMzMjRkOTkifQ.eyJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjU1NTYvZGV4Iiwic3ViIjoiQ2djeU16UXlOelE1RWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTQ5Mjg4MjA0MiwiaWF0IjoxNDkyNzk1NjQyLCJhdF9oYXNoIjoiYmk5NmdPWFpTaHZsV1l0YWw5RXFpdyIsImVtYWlsIjoiZXJpYy5jaGlhbmdAY29yZW9zLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiYWRtaW5zIiwiZGV2ZWxvcGVycyJdLCJuYW1lIjoiRXJpYyBDaGlhbmcifQ.OhROPq_0eP-zsQRjg87KZ4wGkjiQGnTi5QuG877AdJDb3R2ZCOk2Vkf5SdP8cPyb3VMqL32G4hLDayniiv8f1_ZXAde0sKrayfQ10XAXFgZl_P1yilkLdknxn6nbhDRVllpWcB12ki9vmAxklAr0B1C4kr5nI3-BZLrFcUR5sQbxwJj4oW1OuG6jJCNGHXGNTBTNEaM28eD-9nhfBeuBTzzO7BKwPsojjj4C9ogU4JQhGvm_l4yfVi0boSx8c0FX3JsiB0yLa1ZdJVWVl9m90XmbWRSD85pNDQHcWZP9hR6CMgbvGkZsgjG32qeRwUL_eNkNowSBNWLrGNPoON1gMg
这些签名的令牌包含了标准声明,如哪个客户端应用进行了登录、何时过期以及用户的身份等信息。
{
"iss": "http://127.0.0.1:5556/dex",
"sub": "CgcyMzQyNzQ5EgZnaXRodWI",
"aud": "example-app",
"exp": 1492882042,
"iat": 1492795642,
"at_hash": "bi96gOXZShvlWYtal9Eqiw",
"email": "jane.doe@coreos.com",
"email_verified": true,
"groups": [
"admins",
"developers"
],
"name": "Jane Doe"
}
由于这些令牌由dex签署并包含标准化的声明,它们可以被其他服务用于服务间凭证,如AWS STS和Kubernetes。
Kubernetes与Dex的协同工作
Dex无缝集成在任何Kubernetes集群之上,利用Kubernetes的自定义资源定义,并驱动API服务器的认证。用户可以通过Dex支持的任何身份提供商登录,而客户端,如kubectl
或kubernetes-dashboard
,可以在代表用户进行操作时,无需理解每个上游提供商的复杂性。
更多信息,包括如何在Kubernetes上运行Dex以及有关公司的使用案例,可访问项目文档中的相应指南。
连接器:多平台身份认证的桥梁
Dex通过"连接器"策略与各种身份提供者交互。无论是GitHub、LinkedIn还是微软,或是使用诸如LDAP和SAML的传统协议,只需向Dex请求,它就能实现认证流程的标准化。
Dex目前支持以下连接器:
| 名称 | 支持刷新令牌 | 支持组声明 | 支持preferred_username声明 | 状态 | 备注 | |----------------------|---------------|-------------|------------------------------|------------|--------------------| | LDAP | 是 | 是 | 是 | 稳定 | | | GitHub | 是 | 是 | 是 | 稳定 | | | SAML 2.0 | 否 | 是 | 否 | 稳定 | 注意:不受维护,可能存在漏洞(#1884)| | GitLab | 是 | 是 | 是 | 测试版 | | | OpenID Connect | 是 | 是 | 是 | 测试版 | 包括Salesforce、Azure等| | OAuth 2.0 | 否 | 是 | 是 | 阶段测试 | | | Google | 是 | 是 | 是 | 阶段测试 | | | LinkedIn | 是 | 否 | 否 | 测试版 | | | Microsoft | 是 | 是 | 否 | 测试版 | | | AuthProxy | 否 | 是 | 否 | 阶段测试 | 如Apache2 mod_auth等代理 | | Bitbucket Cloud | 是 | 是 | 否 | 阶段测试 | | | OpenShift | 是 | 是 | 否 | 阶段测试 | | | Atlassian Crowd | 是 | 是(*) | 否 | 测试版 | 需要配置config才能获取preferred_username| | Gitea | 是 | 否 | 是 | 测试版 | | | OpenStack Keystone | 是 | 是 | 否 | 阶段测试 | |
稳定性等级如下:
- 稳定:经过充分测试,广泛使用,不会以不兼容方式改变。
- 测试版:已测试,不太可能以不兼容方式改变。
- 阶段测试:可能未经核心团队测试,可能会有不兼容的变更。
所有更改或弃用连接器特性将在发布说明中宣布。
文档与资源
报告安全问题
请参阅我们的安全政策,了解报告漏洞的详细信息。
获取帮助
开发
完成编码和测试后,请运行测试套件:
make testall
为了最佳的开发体验,安装Nix和direnv。否则,手动或通过包管理器安装Go和Docker,然后运行make deps
来安装其余依赖项。
有关发行过程的详细信息,请查阅发行文档。
许可证
该项目遵循Apache License, Version 2.0许可。
探索Dex,开启您安全高效的身份验证之旅,无论您的业务是在云端还是本地,Dex都将为您提供灵活且强大的解决方案。立即加入社区,共享与学习关于Dex的最新动态和最佳实践!