本文主要是介绍单点登录:一把钥匙开启所有门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单点登录(SSO)技术,就像是一把开启企业数字化大门的钥匙,让用户一次登录,随处访问,极大地提升了工作效率和用户体验。具体到技术实现上,当用户首次登录时,SSO系统会进行认证,并发放一个凭证(如Token)。当用户尝试访问其他服务时,只需出示这个凭证,而无需再次输入账号密码。这不仅加快了工作流程,还大大减少了因记不住密码而导致的安全风险。
SSO解决方案
单点登录的核心在于:在多个应用系统中,用户只需进行一次登录认证,就可以无缝访问所有相互信任的应用系统。这背后需要一个独立的认证中心,通常称为Passport。
当用户首次尝试访问任一应用系统时,系统会将用户引导至Passport进行认证。一旦认证成功,Passport就会颁发一个令牌给用户。随后,用户携带这个令牌访问其他系统时,无需再次登录,系统会识别该令牌,并授予用户相应的访问权限。
这里会涉及同域名及不同域名两种方式:
-
• 同域名下的SSO:依托Cookie的域属性,可以实现同一个主域名下的各子域应用间共享token,从而实现单点登录。
-
• 跨域名的SSO:对于不同域的应用,可以通过建立一个独立的认证中心,使用令牌机制来实现单点登录。
-
下图就是针对跨域名的SSO的流程:
在技术实现上,单点登录可以借助如 CAS(Central Authentication Service)、OAuth、OpenID Connect 等标准协议,也可以基于企业内部的自定义协议实现。在整个流程中,要维护一个全局认可的信任票证(token),并通过集中式的认证服务中心来进行身份的统一管理和验证。 CAS(Central Authentication Service)和OAuth 2.0(Open Authorization)都是在网络应用中广泛使用的认证和授权协议。
OAuth 2.0 (Open Authorization)
OAuth 2.0是一个授权框架,允许第三方应用获取对用户资源的有限访问权限,而无需获取用户的凭证。OAuth 2.0更注重授权而非认证。
使用场景:OAuth 2.0广泛应用于互联网服务中,允许用户授权第三方应用访问他们存储在其他服务提供商上的信息,例如我们通过微信授权登录一个小程序或者应用。
工作流程:用户授权第三方应用访问自己在另一个服务上的资源时,该应用将获得一个访问令牌。该令牌允许第三方应用代表用户访问其资源。这个在微信开放平台、支付宝等都有相关接入说明及接口,大家可以去参考下。主要流程如下:
1. 用户请求客户端应用程序访问资源。
2. 客户端应用向授权服务器请求授权。
3. 授权服务器要求用户提供认证。
4. 用户向授权服务器提供认证。
5. 如果认证成功,授权服务器将授权码发送给客户端应用。
6. 客户端应用使用授权码向授权服务器请求访问令牌。
7. 授权服务器向客户端应用发放访问令牌。
8. 客户端应用使用访问令牌向资源服务器请求资源。
9. 资源服务器向客户端应用提供资源。
10. 客户端应用将资源显示给用户。
CAS (Central Authentication Service)
CAS是一种单点登录(SSO)协议,旨在允许用户在多个应用程序间使用单一的认证过程登录。它专注于解决用户认证问题,而不涉及授权。
使用场景:CAS通常用于单一组织或紧密相关组织的内部应用中,提供集中式的用户认证服务。
工作流程:用户首次尝试访问应用时被重定向到CAS服务器进行认证。一旦认证成功,用户就可以无需再次登录即可访问其他集成了CAS的应用。一般公司级的应用都会采用这种方式。
用户未登录访问 app1
1. 用户访问 app1 的受保护资源,app1 发现用户未登录,跳转至统一认证中心,并将自己的地址作为参数
2. sso 认证中心发现用户未登录,将用户引导至登录页面
3. 用户输入用户名密码提交登录
4. 统一认证中心校验用户信息,创建用户与 sso 认证中心之间的会话 TGC,同时创建 Token
5. 统一认证中心带着 Token 跳转最初 app1 的请求地址,浏览器缓存 TGC 及 Token
6. app1 拿到 Token,去统一认证中心校验 Token 是否有效
7. 统一认证中心校验 Token,返回有效
8. app1 使用该 token 创建与用户的会话,返回受保护资源
用户已登录 app1 再次访问 app1
1. 请求携带 Token,app1 请求认证中心确认 Token 是否有效
2. app1 返回受保护资源
用户登录 app1 后访问 app2
1. 用户访问系统 2 的受保护资源,未携带 app2 的 Token
2. app2 发现用户未登录,跳转至统一认证中心登陆页,并将自己的地址作为参数
3. 登陆页拿到 TGC,判断已经登录,跳转到 app2 页面
4. 请求统一认证中心通过 TGC 换取 Token
5. 统一认证中心校验后,返回 Token
6. app2 使用该 Token 创建与用户的局部会话,返回受保护资源
总结
通过实施SSO,企业可以极大地简化用户的登录流程,加强数据安全,提高工作效率。无论是采用CAS还是OAuth 2.0,关键在于选择最适合企业自身需求和现有架构的解决方案。
这篇关于单点登录:一把钥匙开启所有门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!