企业随着业务的发展,必然会部署各种各样的IT系统。出于安全性的考虑,一些系统仅可企业内部使用,甚至仅开放给企业部分部门员工使用。
这些IT系统大致可分为两类,
- 系统本身不支持任何认证机制,例如资讯或文档类系统。需要增加认证保护,能够限制非企业员工访问即可。系统运维通常的做法是,为站点设置 HTTP Basic认证 保护。由于 是通过预设的用户、密码认证,认证信息比较容易泄露。即使定期更换密码,但需要额外的机制通知用户密码的变更,用户体验也不好。
- 系统自身支持认证,甚至支持多种认证机制。比如最常用的开源CI/CD工具, Jenkins 内置支持本地数据库认证、通过 插件 支持多种第三方系统集成认证。如果大量的IT系统都有一套独立的用户管理,随着企业的员工的变更,用户的增删等操作对系统管理员来说是不小的工作量。同时,也很容易由于人为疏忽,造成资产、数据的安全隐患。
假设企业自身已经有了一套OA系统包含员工、组织结构管理,例如,国内目前最为普及流行的
钉钉或
企业微信。我们完全可以提供一套基于
oauth 2.0协议的认证方式,让以上两类IT系统使用企业已有的OA系统(
)来实现登录认证。做到这一点后,企业无论有多少IT系统都不再需要额外管理用户的成本,并且也避免了数据安全隐患。
通过
钉钉开放平台提供的API开放了许多钉钉内部的能力,例如,
身份验证、
通讯录管理等等。然而
钉钉的三方网站登录接口并不是标准的
实现,我们需要通过一个
oauth2 proxy代理工具实现将
钉钉的三方网站登录兼容
oauth2协议。同理,使用
这个oauth2代理工具,可以使用
Google Facebook等三方网站作为统一认证方式。
有了基于
钉钉的oauth2代理作为企业统一登录方式,对于上面两大类系统的认证需求解决方案分别如下,
- 部署在 Kubernetes 中无内置认证机制的Web应用,通过 nginx-ingress 的 外部OAUTH认证 实现基于oauth2的安全认证。
- 可以通过 反向代理插件 实现使用oauth2认证登录。
在
下篇中,我们将图文详解如何一步步实现为一个无认证的企业文档Web应用添加基于
钉钉的统一认证。