开源单点登录系统

本文最后更新于 2023年11月8日。

单点登录(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