【问题标题】:Is it possible to authenticate the user for applications on multiple domains or IP addresses with CAS server?是否可以使用 CAS 服务器对多个域或 IP 地址上的应用程序的用户进行身份验证?
【发布时间】:2017-05-27 04:49:06
【问题描述】:

我的环境是 Spring4,也使用 Spring-security。

例如,有两台服务器包含相同类型的 Java 应用程序,由 Jetty 应用程序服务器提供支持。但是,他们不共享 JSESSIONID 或任何会话。

问题

  1. 如果我们在 192.168.1.3 上有一个 CAS 服务器,并且用户曾经使用 CAS 服务器登录过 serverA 应用程序,是否可以在不输入用户 ID/密码的情况下登录 serverB 应用程序?强>

  2. 能否请您简单介绍一下架构?

编辑

  • 我按照文档用Spring4 + Spring-security + Spring-cas 测试了这个环境,21. CAS Authentication
  • 但是,会话 cookie 提供程序是 Spring 而不是 CAS,因此会为每个服务器的 IP 地址创建会话。如果我们登录后有serverA的会话,就不可能获得serverB的会话。我未能减少登录尝试。我的意思是无论如何都需要输入 ID/Pass 才能登录 serverA 和 serverB。
  • 经过很长时间,我意识到我真正的需求是可以通过一次登录尝试登录多个资源(超过服务器资源)。但是,我认为这是“单点登录”的扩展含义...

顺便

  • Spring-session 项目提供了为多个资源共享会话的架构。 Spring-session 将他们的会话存储在 Redis 后端。
  • 然而,使用 Spring-session 也很困难,因为它需要 a.example.comb.example.com > 而不是 IP 地址。

【问题讨论】:

  • 您的问题到底是什么?当两个应用程序都指向 192.168.1.3 作为 CAS 服务器时,单点登录应该可以正常工作。
  • @JohannesMüller 我认为如果我将 CAS 引入这个环境,我可以减少登录尝试。但是,事实并非如此。这就是问题。这意味着,“用户曾经使用 CAS 服务器登录 serverA 应用程序,之后当用户尝试登录 serverB 时,他/她将需要再次通过 CAS 服务器输入 id/pass(对于此环境)”
  • 仍然不确定您的问题... serverA 和 serverB 不需要共享会话以使 CAS 工作。一旦您通过 CAS 登录到 serverA,这将在 CAS 服务器上创建一个会话。当 serverB 询问 CAS 是否有用户登录时,CAS 服务器不应要求身份验证,因为存在一个现有会话。

标签: java spring-security single-sign-on cas jasig


【解决方案1】:

是否可以使用 CAS 服务器对多个域或 IP 地址上的应用程序的用户进行身份验证?

当然可以!这正是 CAS 为我们所做的!当用户在 CAS 服务器上进行身份验证时,他将获得一个 TGT(Ticket Granting Ticket),它将存储在他的浏览器的 cookie 中。 TGT 表示用户已通过身份验证,无需再次进行身份验证(直到注销或会话到期)。使用TGT,用户可以访问与CAS 集成的任何IP 或域中的任何服务,并获得单个服务的ST(服务票证)。所以下次他会用特殊的ST 打电话给服务,这样他就不需要再联系CAS了。 欲了解更多信息,请访问CAS Architecture

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多