
文章目录
SSO英文全称
Single SignOn,即单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。是目前比较流行的企业业务整合的解决方案之一。
OAuth 2.0
OAuth 2.0 是一个开放标准的授权协议,主要用于授权第三方应用程序访问受保护的资源,而不需要用户提供其权限(例如用户名和密码)。尤其在单点登录(SSO)和身份验证方面,OAuth 2.0 在一定的编程中支持这些功能,尽管它不是专门设计的。
以下是OAuth 2.0协议的关键概念和特点:
- 授权流程:
- 资源所有者:拥有受保护资源的用户。
- 客户端:希望访问第三方应用程序的资源。
- 授权服务器:负责认证用户并颁发访问令牌(Access Token)的服务器。
- 资源服务器:存储受保护的资源并根据访问令牌提供对这些资源的访问。
- 角色:
- 授权服务器:负责验证资源所有者的身份,并根据资源所有者的同意授予访问令牌给客户端。
- 资源服务器:存储受保护的资源,并根据访问令牌验证客户端对资源的访问权限。
- 授权类型:
- 授权码授权(Authorization Code Grant):用于Web应用程序,通过授权码交换访问令牌。
- 隐式授权(Implicit Grant):适用于浏览器或移动应用,直接从授权端点获取访问令牌。
- 密码授权(Resource Owner Password Credentials Grant):资源所有者提供用户名和密码直接交换访问令牌。
- 客户端授权授权(Client Credentials Grant):适用于机器对机器通信,客户端通过自身凭证获取访问令牌。
- 单点登录(SSO)和身份验证:
- OAuth 2.0并不是专门为单点登录设计的,但它提供了一些机制,使得可以在多个系统间进行认证并赋予更灵活的功能。
- 通过 OAuth 2.0,用户可以通过授权服务器一次性登录,并在授权内部使用访问令牌访问多个资源。
- 安全性:
- OAuth 2.0 使用令牌化的方式,访问令牌代表用户的访问权限,并不是直接暴露用户的权限(例如用户名和密码)。
- 有效管理和保护令牌是保证安全性的关键,包括令牌的时效性、访问范围、加密方式等。
用户登录流程
- 用户尝试访问客户端应用,但尚未认证。
- 客户端检测到用户未经认证,发起重定向至认证服务器请求认证。
- 用户被重定向至认证服务器,在此进行身份验证,并被询问授权请求。
- 用户授权成功后,认证服务器发回授权码至客户端。
- 客户端使用授权码交换访问令牌(Access Token)和刷新令牌(Refresh Token)。
- 客户端使用 Access Token 请求资源服务器获取用户资源。
- 资源服务器验证 Access Token,若合法则提供用户资源。
客户端/服务端交互
- 客户端: 负责重定向到认证服务器,并获取访问令牌用于访问资源服务器。
- 服务端: 包括认证服务器和资源服务器,认证服务器负责验证用户身份并颁发令牌,资源服务器验证令牌并提供资源。
虽然OAuth 2.0在一定程度上支持单点登录和验证,但它更关注授权身份和资源访问,而不是认证。为了实现更完整的单点登录体验,通常需要与其他身份验证协议(例如OpenID)连接)结合使用。
总的来说,OAuth 2.0是一种灵活的授权协议,适用于很多场景下的授权访问需求,但在考虑实现单点登录或完整的身份验证系统时,可能需要结合其他协议和技术来实现更多全面的解决方案。
OpenID Connect
OpenID Connect简称为OIDC,是一个以用户为中心的数字身份识别框架,是第三代OpenID技术,扩展了 OAuth 2.0 授权协议,在OAuth2.0上构建了身份层,使其可用作身份验证协议。 OIDC 通过一个称作“ID 令牌”的安全令牌在支持 OAuth 的应用程序之间启用单点登录 (SSO)。OpenID是一个去中心化的网上身份认证系统。对于支持OpenID的网站,用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为OpenID身份提供者(identity provider, IdP)的网站上注册。OpenID是去中心化的,任何网站都可以使用OpenID来作为用户登录的一种方式,任何网站也都可以作为OpenID身份提供者。OpenID既解决了问题而又不需要依赖于中心性的网站来确认数字身份。
OAuth2实际上只做了授权,而OpenID Connect在授权的基础上又加上了认证。
OIDC的优点是:简单的基于JSON的身份令牌(JWT),并且完全兼容OAuth2协议。
OpenID(认证)+OAuth 2.0(授权)=OpenID Connect(认证+授权)。
使用标准的JWT令牌,REST/JSON消息流,允许开发人员跨网站和应用程序验证其用户,而无需拥有和管理密码。OpenID Connect的设计支持web程序、本地应用程序和移动应用程序。
用户登录流程
- 用户请求访问客户端。
- 客户端重定向至认证服务器。
- 用户在认证服务器上进行身份验证和授权。
- 认证服务器发放 ID 令牌至客户端。
- 客户端使用 ID 令牌验证用户身份,并获取用户信息。
客户端/服务端/认证中心交互
- 客户端: 发起登录请求并验证 ID 令牌。

本文介绍了单点登录(SSO)相关的多种协议,如OAuth 2.0、OpenID Connect、JWT、SAML、Kerberos、CAS、LDAP,阐述了各协议的用户登录流程、客户端/服务端交互等内容,还介绍了Keycloak身份和访问管理开源解决方案,其功能丰富、易于集成和部署。
最低0.47元/天 解锁文章
3394

被折叠的 条评论
为什么被折叠?



