第 16 章 单点登录(SSO)
16.1. 关于 Web 应用程序的单点登录 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
概述
单点登录(Single Sign On,SSO)允许到某个资源的验证可以授权对其他资源的访问。
群集和非群集的 SSO
非群集的 SSO 限制分享授权信息至相同虚拟机上的应用程序。此外,它在主机出现故障时无弹性可言。而群集 SSO 数据可以在多个虚拟主机里的应用程序间共享,对失效切换有一定弹性。而且,群集 SSO 可以从负载平衡器接收请求。
SSO 是如何工作的
如果资源是未受保护的,用户根本不会被验证。如果用户访问了受保护的资源,用户将被验证。
在成功验证后,和用户相关联的角色将被存储并用于所有其他相关资源的授权。
如果用户从应用程序登出,或者应用程序在程序里使会话失效,所有保持的授权数据将被删除,这个过程将重新开始。
如果其他会话仍然有效,会话超时不会使 SSL 会话失效。
SSO 的限制
- 不能在第三方边界传播数据
- SSO 只能在部署在 JBoss EAP 6 容器里的应用程序间使用。
- 只能用于容器管理的验证
- 你必须在应用程序
web.xml
里使用容器管理的授权元素,如<login-config>
。 - 要求 cookie
- SSO 通过浏览器 cookie 来保持且不支持 URL 重写。
- 区和安全域的限制
- 除非设置
requireReauthentication
参数为true
,配置相同 SSO 值的所有的 web 应用程序都应该共享web.xml
里的相同的区(Realm)配置以及安全域。你可以在 Host 元素或周围的 Engine 元素里嵌套 Realm 元素,但不能放在涉及的 web 应用程序里的 context.xml 元素里。jboss-web.xml
里配置的<security-domain>
必须在所有的 web 应用程序里一致。所有的安全集成必须接受相同的凭证(如用户名和密码)。