系统架构
单点登录(SSO)
-
单点登录(SSO)平台是一种身份验证和授权机制,允许用户使用一组凭据(例如用户名和密码)登录到多个相关但独立的软件系统或应用程序中。在没有SSO的情况下,用户需要为每个系统单独进行身份验证,这既增加了用户的负担,也增加了管理成本。SSO通过在用户首次登录时颁发令牌或票据,并在随后的登录中重复使用该令牌或票据,来解决这一问题。
-
SSO平台的关键优势包括提高用户体验、简化管理流程、增强安全性和降低成本。用户只需记住一个集中的凭据,就可以访问多个系统,而管理员可以更轻松地管理用户的访问权限和凭据。此外,SSO平台还可以通过集中的身份验证和访问控制,提高安全性,并减少了因密码遗忘和重置而产生的支持成本。
主流sso系统
- Keycloak
- Keycloak是一个开源的身份和访问管理解决方案,由Red Hat维护。,提供了单点登录(SSO)、身份验证、授权以及身份管理等功能。
- Keycloak支持多种身份验证方法,包括用户名/密码、社交媒体账号、OpenID Connect、SAML等。它还提供了灵活的访问控制策略,可以根据用户角色、用户组、客户端等进行细粒度的访问权限管理。
- 使用Keycloak,组织可以实现单点登录,使用户只需一次登录即可访问多个应用程序,提高用户体验和便利性。同时,Keycloak还提供了用户管理功能,允许管理员管理用户账号、角色和权限等。
- Casdoor
- Casdoor是一个开源的身份认证和授权解决方案,可用于管理云原生环境中的用户身份和访问控制。它可以提供单点登录(SSO)、OAuth2、OpenID Connect等多种身份验证和授权方式,同时还支持RBAC(基于角色的访问控制)。
- Casdoor使用Go语言编写,具有轻量级、高性能和易于部署,配置的特点。
部署文档(官网手册)
- 参考 https://casdoor.org/zh/docs/overview
数据库部署
docker run -d \
--name mysql \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='kvB/y9VcMRA=' \
-v /data/docker/mysql8/mysql:/var/lib/mysql \
--restart=always \
mysql
mysql -h127.0.0.1 -uroot -pkvB/y9VcMRA=
mysql> create database casdoor;
casdoor部署
- 配置文件模板 https://github.com/casbin/casdoor/blob/master/conf/app.conf
cat /data/docker/casdoor/conf/app.conf
appname = casdoor
httpport = 8000
runmode = dev
copyrequestbody = true
driverName = mysql
dataSourceName = root:kvB/y9VcMRA=@tcp(172.17.0.2:3306)/
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 10
initScore = 2000
logPostOnly = true
origin =
staticBaseUrl = "https://cdn.casbin.org"
isDemoMode = false
batchSize = 100
ldapServerPort = 389
languages = en,zh,es,fr,de,ja,ko,ru,vi
quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
docker run -d \
--name=casdoor \
--restart=always \
-p 8000:8000 \
-v /etc/localtime:/etc/localtime \
-v /data/docker/casdoor/conf/:/conf \
casbin/casdoor:v1.351.0
登录验证
27/11/2023 16:48.15 /home/mobaxterm curl -X POST\
> --url http://10.37.2.114:8000/api/login\
> --header 'Content-Type: application/json'\
> --data '{"application":"app-built-in","organization":"built-in","username":"admin","password":"123","autoSignin":true,"type":"login"}'
{
"status": "ok",
"msg": "",
"sub": "",
"name": "",
"data": "built-in/admin",
"data2": null
}
为什么使用casdoor
权限管理系统最开始是没有准备做的,最开始是为了解决统一授权问题,在Keycloak和Casdoor中选择了后者,前者虽说是红帽维护的,但是配置较为复杂,casdoor配置相对简单,而且支持多种语言,手册写的也比较详细,最终选择了Casdoor。经过长时间的摸索,目前可以通过casdoor配置的企业微信扫码登录认证confluence,gitlab,jenkins,jumpserver,等一些二开的支持cas认证的系统。
正因为多系统都支持企微扫码,权限管理系统应运而生。主要是为了解决密码账号问题,解决nginx白名单问题,解决动态授权问题,解决客户端IP管理问题。
GZH
- 欢迎关注同名GZH"小红帽rh",获取更多最新分享。