使用 Apache Shiro 在自定义 Java Web 应用程序与 Drupal 之间进行 SSO 集成

Posted

技术标签:

【中文标题】使用 Apache Shiro 在自定义 Java Web 应用程序与 Drupal 之间进行 SSO 集成【英文标题】:SSO Integration between a custom Java web app with Drupal using Apache Shiro 【发布时间】:2012-08-13 20:47:52 【问题描述】:

我有一个使用 Java (Java EE)、spring 和 Hibernate 开发的 Web 应用程序。我们计划使用 Apache Shiro 进行角色和访问管理。我们的客户要求之一是使用一些 CMS 功能以及已选择 Drupal 的 Web 应用程序。由于所有用户都是在基于 Java 的 Web 应用程序中创建的,我们希望在 Java Web 应用程序和 Drupal 之间启用单点登录。

启用 SSO 后,Web 应用程序的用户应该能够访问在 Drupal 中创建的页面(静态内容、博客等)。

【问题讨论】:

【参考方案1】:

您最好的选择可能是使用CAS 来处理 Drupal 和 Shiro 的 SSO。 Drupal 有CAS module,Shiro 也可以配置为CAS client。您没有提供有关您的用户帐户的维护方式的任何详细信息,但理想情况下,此类数据将保存在 OpenLDAP 或 Active Directory 等目录系统中。

【讨论】:

谢谢@brian CAS 看起来是目前最好的选择。用户帐户保存在 Java Web 应用程序的 SQL 数据库中 对您提出的 CAS 解决方案进行了大量阅读。据我了解,您建议将 Drupal 和 Java Web 应用程序配置为 CAS 客户端,然后将其连接到 CAS 服务器。我面临的问题是 CAS 服务器必须单独安装、配置和管理。 是的,没错,CAS 确实需要配置 CAS 服务器。 Drupal 的 CAS 模块提供服务器功能,但由于您的用户是在 Java Web 应用程序的数据库中维护的,因此将 Drupal 作为 CAS 服务器可能不适合您。 JASIG CAS 服务器是一个 Java/Spring Web 应用程序。您可以将其添加到您的 Java 设置中并将其配置为使用 JDBC 身份验证处理程序来访问您的 Java 应用程序的数据库以对您的用户进行身份验证。 谢谢@brian。经过一番努力,终于设法让 CAS 服务器设置并运行。它也连接到mysql。最好的指南可以在这里找到sachinkamboj.wordpress.com/2009/07/20/… 添加一些在配置 CAS 服务器时可能有用的元素。如果您正在使用存储在数据库中的密码的一些散列,那么这在配置 CAS 服务器时很有用 - developers-and-admins-of-statusnet.38116.n3.nabble.com/… 这也有一些很好的指针 jasig.275507.n4.nabble.com/…

以上是关于使用 Apache Shiro 在自定义 Java Web 应用程序与 Drupal 之间进行 SSO 集成的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UsernamePasswordToken 报错 java.lang.ClassCastException: org.apache.shiro.authc.UsernamePasswordT

shiro框架的四中权限控制方式

shiro框架的四中权限控制方式

Apache Shiro 使用手册Shiro 配置说明

Apache Shiro:登录时出现 IllegalArgumentException

使用 Java 和 apache HttpClient 的 Apache Shiro authcBasic 身份验证