破解多次登录困境,提升企业效率的单点登录(SSO)解决方案

文摘   2024-11-13 16:01   河南  

(本文由马哥教育学员技术分享


如何实现企业应用系统的统一认证


痛点描述

1、多次登录带来的用户体验

在多数企业中,员工每天需要登录多个系统(如Grafana、Jumpserver、Jira、GitLab、Jenkins等),每个系统都有独立的用户名和密码。为了方便记忆,很多从往往使用相同的密码,这导致了更大的安全风险。

2、安全风险和管理挑战

为了确保企业数据安全,IT部门通常要求员工为每个系统设置不同的强密码。这加大了密码管理的复杂性,导致员工频繁的忘记密码。此外IT部门还面临着更高的运维成本和管理挑战,比如用户的身份验证、密码恢复、账号锁定等。

3、管理员负担

对于管理员来说,管理众多系统中的用户身份和权限变得异常复杂。企业需要频繁地管理用户的添加、删除和修改操作,尤其是员工入职、离职时,需要在每个系统中更新用户信息。这样不仅费时,还容易出错。

什么是单点登录(SSO)

系统单点登录(SSO,Single Sign-On)是一种身份认证技术,允许用户通过一次登录就能访问多个相互信任的系统,而无需在每个系统中重新输入用户名和密码。通过SSO,用户只需记住一个账户信息即可,无论是在内部系统还是外部应用,都能实现无缝访问。

工作原理

SSO的核心是建立一个统一的身份认证平台,当用户登录一个系统后,SSO平台将其认证信息传递给其他受信任的系统。当用户访问其他系统时,这些系统会通过SSO平台的验证,允许用户直接访问而无需再次登录。

常见的SSO协议

  • OAuth2.0:常用于Web应用中的授权协议,允许第三方应用请求用户的某些权限。

  • SAML 2:常用于企业级系统之间的身份认证协议,基于XML传递身份信息,更安全。

  • OIDC:OAuth2.0的扩展,用于用户身份验证,适合Web和移动应用。

  • CAS:企业级单点登录协议,常用于高校或大型企业。

单点登录优势

1、提高用户体验

SSO大大减少了员工在不同系统之间重复登录的麻烦,用户只需登录一次即可访问所有授权的系统。这不仅提高了员工的工作效率,还减少了忘记密码和频繁重置密码的情况。

2、增强安全性

SSO通过集中化的身份验证和强大的认证策略,可以大幅提升企业的安全性。它支持多因素认证(MFA)来确保用户身份的真实性。此外,由于减少了系统间的重复登录,暴露的登录点也更少,降低了黑客攻击的风险。

3、降低IT运维成本

IT管理员只需在一个集中化的系统中管理用户权限,极大减少了管理多个系统的工作量。员工的身份信息可以在多个系统中自动同步,避免了手动更新权限的复杂操作。对于员工入职、离职等情况,也能迅速处理用户的访问权限,提升管理效率。

解决方案

现分享一个开源的单点登录系统,基于Golang、Vue前后端分离设计,项目地址:https://github.com/yuyan075500/ops-api。

功能概览

1、用户认证方式

用户来源支持Windows AD和OpenLDAP,此外用户可以通过钉钉、企业微信、飞书扫码认证。

2、协议

支持CAS3.0、OAuth2.0、SAM2和OIDC。

3、安全性

支持MFA(双因素认证),可以使用使用Google Authenticator、阿里云APP和华为云APP扫描获取动态验证码的试。

4、运维成本

支持用户自助进行密码和更改,统一密码更改入口,对密码进行强管控,无需要管理员参与。

项目部署

你只需要准备一台2核4G的Linux服务器,并部署好Docker和Docker Componse就可以5分钟快速拥有一套单点登录系统

1、克隆项目

git clone https://github.com/yuyan075500/ops-api.git

2、切换工作目录

cd ops-api/deploy/docker-compose

3、环境变量配置

修改.env文件中环境变量,如果使用docker-compose.yaml中指定的MySQL、Redis、MinIO,则可以跳过此步骤。

注意:.env中定义的Minio的accessKey和secretKey需要在部署成功后登录进MinIO控制台手动创建

4、项目配置

修改conf/config.yaml文件中相关配置,将externalUrl修改为此系统实际的访问地址即可。其它配置说明可以参考《官方文档》

5、创建证书

如果是测试环境可以路过此步骤,创建证书参考《官方文档》,证书创建完成后需要将证书复制到certs目录中。

6、创建数据目录

需要手动创建Minio数据目录

mkdir -p data/minio
cd ops-api/deploy/docker-compose

7、执行部署

docker-compose up -d

8、数据初始化

将deploy/data.sql文件中的SQL导入到MySQL数据库。

9、系统登录

部署完成后,系统会自动创建一个超级用户,此用户不受权限控制。用户名为:admin,密码为:admin@123...

关于更详细的部署文档参考《官方文档》。

(以上为马哥教育学员-技术分享

文末福利一


最近有很多朋友都在学习go,于是给大家分享一份超级牛掰的go学习资料合集,包含go语言入门笔记、web框架开发、go语言面试题和实战项目视频合集!大家有需要的尽管收藏起来!

完整资料领取看这里

扫码添加小助理
备注:超全Go学习资料汇总

文末福利二

1分购五重豪礼

K8S从入门到实战专题课(12小时)

14353页Linux学习笔记

937页K8S学习笔记

web安全学习笔记

570个Linux命令大全

Golang在发光
每天为大家分享最新的Golang相关的技术文章、干货资料、语言资讯、语言教程、实战项目等,供大家学习和提升!
 最新文章