本文最后更新于 2024年5月16日。
单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。
下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。
Authelia
https://github.com/authelia/authelia
Authelia是一个免费、开源、可私有化部署的单点登录(SSO)项目。它具有时尚的登录窗口,支持一次性密码设置、通知推送等功能。
Authelia可以独立安装,或者使用Docker、Kubernetes容器部署。
下图是Authelia的登录页面:
开发语言:Go、TypeScript、Html
Keycloak
https://www.keycloak.org/
https://github.com/keycloak/keycloak
Keycloak是一个免费、开源身份认证和访问管理系统,支持高度可配置的单点登录(SSO)功能。
Keycloak内置支持连接到现有的LDAP或Active Directory服务器。也可以自己实现与关系数据库中的用户数据对接。
另外,如果基于角色的授权不能满足需求,Keycloak还提供了细粒度的授权服务。这允许您从Keycloak管理控制台管理所有服务的权限,您可以准确地定义您所需的授权策略。
Keycloak支持许多目前比较流行认证标准协议,如:OpenID Connect,OAuth 2.0、SAML 2.0等。
开发语言:Java、TypeScript、Html
Apereo CAS
https://github.com/apereo/cas
Apereo CAS是一个开源的企业级单点登录系统,是CAS项目的一部分。
Apereo CAS开箱即用,并且提供多种协议支持,如:CAS(v1,v2和v3)、SAML(1.0和2.0)、OAuth(v2)、OpenID、OpenID Connect等。
Apereo CAS支持使用多种身份证方法,包括:JAAS、LDAP、RDBMS、Radius、JWT等。
Apereo CAS支持通过Due、YubiKey、RSA、Google Authenticator、U2F、WebAuten等进行身份验证。
系统架构如下图所示:
开发语言:Java(Spring/Spring Cloud)、Html
IdentityServer
https://github.com/IdentityServer
IdentityServer是一个完整的IAM(身份和访问管理系统解决方案),它基于OpenID Connect和ASP.NET Core开发,支持OAuth 2.0。通过API提供SSO服务。适合使用.Net技术的开发人员。
开发语言:C#、JavaScript、Html
Jasny SSO
https://github.com/jasny/sso
Jasny SSO是一个轻量级的PHP SSO 项目。它由三部分组成:客户端、代理和服务端。它可以安装并集成到任何PHP项目中。
开发语言:PHP
OpenAM
https://github.com/OpenIdentityPlatform/OpenAM
OpenAM是一个具有SSO功能的全功能IAM系统,它具有SSO、身份验证、授权、身份联合和友好的API。
它支持CDSSO(跨域单点登录),SAML 2.0,OAuth 2.0和OpenID Connect等协议。
开发语言:Java、TypeScript、Html
部署环境:linux、window、mac、Docker
S.S.Octopus
https://github.com/buzzfeed/sso
S.S.Octopus又名sso或者 aka octoboi,是一种用于保护内部服务的单点登录解决方案。它是Buzzfeed下的一个开源SSO项目。它是用Go编写的,可以编译成二进制文件安装,或者Docker安装。
开发语言:Go
ORY Hydra
https://github.com/ory/hydra
ORY Hydra是一个开源的SSO项目,支持OpenID、OpenID Connect和OAuth2.0协议,ORY Hydra是ORY IAM生态系统的一部分。ORY IAM生态包含一系列用于构建IAM系统的子项目,并且这些项目都是开源的。
基于ORY Hydra、Vapor 3的iOS应用案例,架构如下图所示:
开发语言:Go