单点登录(Single Sign-On,简称SSO)是一种用户身份验证的方法,允许用户使用一组用户名和密码就可以访问该组织的所有相关系统或应用程序。这意味着用户只需要登录一次,就可以访问所有的系统,而不需要为每个系统或应用程序单独登录。
单点登录的主要优点是提高了用户的便利性和生产力,因为用户不需要记住多个用户名和密码,也不需要反复登录。此外,单点登录也可以提高安全性,因为用户的凭据只在一次登录过程中被验证,减少了凭据被盗取的机会。
单点登录的实现通常依赖于中心化的身份验证服务器,该服务器负责验证用户的凭据并向其他系统或应用程序提供关于用户身份的信息。这些系统或应用程序可以信任身份验证服务器的断言,因此不需要再次验证用户的凭据。
常见的单点登录技术包括LDAP(轻量级目录访问协议)、Kerberos、OAuth、OpenID Connect、SAML(安全断言标记语言)等。
OAuth
OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另一服务提供商上的信息,而无需将用户名和密码提供给第三方应用。OAuth主要用于授权,而不是用于身份认证。
OAuth工作流程大致如下:
- 用户(Resource Owner)打开第三方应用(Client),第三方应用请求用户授权访问其在服务提供商(Resource Server)上的信息。
- 用户同意给予第三方应用访问其信息的权限。
- 第三方应用收到授权后,将用户重定向到服务提供商,同时附带一个授权码(Authorization Code)。
- 用户向服务提供商提供其凭据(如用户名和密码)进行身份验证。
- 服务提供商验证用户的身份后,确认第三方应用的授权码,然后向第三方应用发放访问令牌(Access Token)。
- 第三方应用使用访问令牌来访问服务提供商上的受保护资源。
这种方式的优点是,用户可以授权第三方应用访问其信息,而无需将用户名和密码提供给第三方应用。同时,用户可以在任何时候撤销第三方应用的访问权限。
OAuth 2.0是目前最广泛使用的版本,被许多大型公司如Google、Facebook、Microsoft等用于他们的API。
OpenID
OpenID 是一种开放标准,允许用户使用单一的身份凭证在多个网站上进行身份验证,而无需为每个网站创建单独的账户。这就是所谓的单点登录(Single Sign-On,SSO)。
OpenID 的工作流程大致如下:
- 用户在支持 OpenID 的网站(称为 Relying Party)上请求登录。
- 网站将用户重定向到其 OpenID 提供商(OpenID Provider)。
- 用户在 OpenID 提供商上进行身份验证。这通常涉及到输入用户名和密码,但也可能包括其他形式的身份验证,如二因素身份验证。
- 用户验证成功后,OpenID 提供商将用户重定向回原网站,并向该网站提供关于用户身份的信息。
- 原网站验证从 OpenID 提供商收到的信息,然后根据该信息决定是否允许用户登录。
OpenID 的主要优点是提高了用户的便利性,因为用户只需要记住一个身份凭证就可以登录多个网站。此外,因为用户的密码只在 OpenID 提供商上输入,所以即使某个网站的安全性不高,也不会影响到用户的密码安全。
OpenID Connect 是 OpenID 的一个扩展,它在 OpenID 的基础上增加了一些新的特性,如身份信息的标准化表示和用户信息的端点。OpenID Connect 常常与 OAuth 2.0 一起使用,以提供身份验证和授权服务。