【问题标题】:CAS SSO with multiple web applications具有多个 Web 应用程序的 CAS SSO
【发布时间】:2011-05-26 03:53:07
【问题描述】:

我花了最后一天左右的时间研究 CAS,并设法让服务器与一个简单的测试应用程序一起工作。当我进入保护区时,我会被重定向到登录页面 - 当我登录时,我会被带回到我之前的页面。

从那里开始,下一步将部署两个客户端应用程序,登录到客户端 A,访问客户端 B 的保护区并让系统为我处理身份验证(因为我已经登录到客户端 A)。

但这实际上不起作用。无论我是否登录到客户端 A 站点,我都必须登录到客户端 B 站点。

CAS 在 Tomcat 上运行,客户端 A 和 B 是同一个项目,作为单独的战争部署在 JBoss AS 6 的单个实例上。

有什么想法可以实现建议的行为吗?

编辑:是的,两者都使用 CAS。问题是它似乎没有识别出用户已经登录。就好像 CAS 无法确定两个服务之间存在“链接”,并且当一个服务已经过身份验证时,其他服务应自动进行身份验证。

我应该注意,在这个阶段,我没有在应用程序中使用 SSL。在介绍 SSL 之前,我专注于创建一个简单的示例并使用 HTTP。

【问题讨论】:

    标签: java single-sign-on cas


    【解决方案1】:

    您的两个应用程序都需要配置为使用 CAS 服务器进行身份验证。正常的程序是应用程序 A 将您重定向到您的 CAS 登录页面,让您登录并将您重定向回 A。如果您随后尝试登录 B,它会与 CAs 服务器检查您是否已经登录并且,如果是,则发回有关已登录用户的信息。

    同样,您的两个应用程序都需要支持 CAS 作为登录机制,从您的描述中我不确定。

    CAS协议的详细说明可以found here

    【讨论】:

    • 关于 SSL:默认情况下,CAS 依靠有效证书来传输其令牌。应用程序(以及 CAS)的日志告诉您什么?如果 SSL 是一个问题,它应该在他们的文件中说明类似的内容。
    【解决方案2】:

    CAS 在没有 SSL 的情况下工作,因为它会将您带到登录站点并正确验证您的身份。问题是如果您尝试通过其他网站访问,它会要求您重新登录。

    一旦我启用 SSL 并尝试了它,它就可以正常工作。登录到客户端 A 后,它会自动在客户端 B 中对您进行身份验证。我在 wiki 上花了一些时间,虽然它谈到了使用 SSL 的重要性,但我不记得它明确指出如果没有启用 SSL,SSO 将无法工作。也许应该在 wiki 中添加警告?

    【讨论】:

      【解决方案3】:

      如果您想专注于您的应用程序并让您的生活更轻松,请为 CAS 服务器使用云提供商:http://www.casinthecloud.com(免费服务器可用于测试)。

      【讨论】:

        猜你喜欢
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-22
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多