什么是单点登录(SSO)?
单点登录(SSO)是一种身份验证和授权解决方案,允许用户只需一次登录,然后访问多个应用程序而无需再次进行身份验证。
例如在taobao.com登录后,就不用在tianmao.com继续登录了
简单的实现方式:
- cookie+共享sesssion:缺点不能跨域,不安全
- JWT
以下是一些常见的SSO解决方案:
1. CAS(Central Authentication Service):
这种方式很常用
CAS是一种开源的SSO解决方案,使用Java编写。它通过中央CAS服务器来管理用户身份验证,允许多个应用程序共享身份验证状态。CAS支持多种身份存储和协议,如LDAP、SAML和OAuth。
2. SAML(Security Assertion Markup Language):
SAML是一种基于XML的开放标准,用于在不同系统之间共享身份验证和授权信息。它通常用于企业环境中,支持单点登录和单点登出。
3. OAuth 2.0:
OAuth 2.0是一种授权框架,虽然它的主要目的是授权而不是身份验证,但它可以用于实现SSO。OAuth 2.0通常与OpenID Connect(OIDC)结合使用,后者是基于OAuth 2.0的身份验证协议,用于实现SSO。
4. OpenID Connect(OIDC):
OIDC是建立在OAuth 2.0之上的开放标准,用于实现身份验证。它提供了用户信息端点,允许客户端应用程序获取用户信息。OIDC通常与OAuth 2.0一起使用,以实现SSO和用户身份验证。
5. LDAP(Lightweight Directory Access Protocol):
LDAP是一种协议,用于访问和维护分布式目录服务。在企业环境中,LDAP通常用于实现身份验证和授权,并支持SSO。
5. Kerberos:
Kerberos是一种网络身份验证协议,广泛用于安全领域。它支持强大的身份验证功能,并可用于实现SSO,尤其在Windows环境中。
6. Shibboleth:
Shibboleth是一种基于SAML的开源身份提供程序(IdP),用于实现SSO。它通常用于教育和研究领域,支持Web单点登录和单点登出。
Auth0和Okta等身份提供商:
身份提供商(IdP)如Auth0、Okta等提供托管的身份验证和授权服务,允许应用程序使用其服务来实现SSO。这些服务通常支持多种协议,如SAML、OIDC和OAuth。