【问题标题】:SSO - JBoss 7.x and JSFSSO - JBoss 7.x 和 JSF
【发布时间】:2014-12-26 17:52:12
【问题描述】:

我们有一个带有 2 个节点的 JBoss EAP 6.3 集群。我们还启用了 SSO。

问题是,我们有一个具有登录表单的 Web 应用程序,因此当 web.xml 中配置的会话超时到期时,它会将用户重定向到该表单。部署的其他 Web 应用程序在会话超时时也会重定向到该表单。

一方面,我们在 web.xml 中为每个 Web 应用程序获取了 session-timeout 属性,另一方面,我们在 JBoss 中启用了 SSO。

所有 Web 应用程序的相同会话超时值是否正确?我们是否应该忽略该值并专注于某些 SSO 全局会话超时值?在这种情况下配置每个 Web 应用程序的会话超时的最佳实践是什么?

谢谢各位, 问候。

【问题讨论】:

    标签: jsf-2 jboss7.x single-sign-on session-timeout


    【解决方案1】:

    Web 会话和 SSO 会话是不同的东西,会话是在您访问 Web 应用程序时创建的,它可以在没有身份验证的情况下存在。 SSO 允许对一种资源进行身份验证以隐式授权对其他资源的访问。
    然后根据文档:

    SSO 的工作原理
    如果资源不受保护,则不会挑战用户 进行身份验证。如果用户访问受保护的资源,则 用户需要进行身份验证。

    认证成功后, 存储与用户关联的角色并用于授权 所有其他相关资源。

    如果用户退出 应用程序,或应用程序使会话无效 以编程方式,所有持久的授权数据都将被删除,并且 过程重新开始。

    如果其他会话仍然有效,会话超时不会使 SSO 会话无效。

    所以如果你想让跨集群的sso认证失效,你可以调用Request.logout()方法,例如。

    SSO 配置选项:

    ma​​xEmptyLife
    仅限集群 SSO。 SSO 的最大秒数 没有活动会话的阀门将被请求使用,之前 到期。正值允许正确处理关闭 节点,如果它是唯一一个连接到阀门的活动会话。 如果 maxEmptyLife 设置为 0,则阀门与 本地会话副本,但会话的备份副本,来自 集群应用程序,可用于其他集群节点。允许 超出其管理会话寿命的阀门给出了 用户有时间发出另一个请求,然后可以故障转移到 不同的节点,它在其中激活会话的备份副本。 默认为 1800 秒(30 分钟)。

    还有:Use Single Sign On (SSO) In A Web Application

    另一件事是无法在 JBoss 7(如 jboss 4、5 和 6)中配置默认​​的 session-timout 值,因此您必须在每个应用程序中配置此值。

    例如。添加你的 web.xml:

    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>
    

    希望对你有所帮助。

    【讨论】:

    • 感谢 Federico,还有一个疑问,“如果其他会话仍然有效,会话超时不会使 SSO 会话无效。” ?该 Web 应用程序中的用户应该发生什么?
    • SSO 是一种身份验证机制。 Web 会话将具有关联的 SSO,它将用户与该主机上的其他应用程序或集群中的其他节点相关联。当所有关联会话无效、执行显式注销或关闭时,SSO 身份验证无效。在集群情况下,当会话无效时,sso 身份验证无效,因为同一应用程序的所有复制会话同时到期。
    • 好的,我测试了这个场景:用户通过具有登录表单的 Web 应用程序(门户)登录(它获取两个 cookie,一个代表 Web 应用程序的会话,另一个代表SSO 会话),然后等到 Web 应用程序的会话过期。出乎意料的是,我可以导航到另一个 Web 应用程序并获得该 Web 应用程序的会话表单。这种行为正确吗?我错过了什么吗?
    • 如果会话已过期并且不存在与 SSO 关联的其他 Web 会话,您必须查看身份验证会发生什么情况,SSO 身份验证也会被删除。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2011-09-06
    • 2016-09-10
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多