【问题标题】:can spring support multi applications sharing membership?spring可以支持多应用共享会员吗?
【发布时间】:2010-01-13 00:00:56
【问题描述】:

spring 框架是否支持共享一个共同用户群的多个应用程序?

例如2 个独立的 Web 应用程序以某种方式连接到单个数据库以获取用户相关信息(用户名、密码,甚至可能是角色)

想法是这样的,类似于asp.net membership

它是这样工作的,你可以有 10 个网站,都从同一个数据源中提取他们的会员 API。安全(角色)和站点映射都通过此会员 API 执行。

通常会发生什么是您发布一个应用程序。然后您发布另一个应用程序,然后您的客户询问您是否可以合并用户等。asp.net 成员从一开始就解决了这个问题。

更新

我并不是要求单点登录,因为您只需登录一次即可访问任何网站。而是您拥有可在所有网站上使用的相同登录凭据。

【问题讨论】:

  • 我不知道为什么这与 Spring 有任何关系——为什么两个应用程序 not 能够访问同一个数据库?
  • 它是一个单点登录功能,而不仅仅是能够连接到数据库。它管理用户“注册”的应用程序等。它们是涉及的映射表等。
  • 您愿意在实际问题中阐明任何的内容吗?我们怎么可能知道这是您所要求的一部分?
  • 我觉得标题很清楚,或者至少我是这么认为的!
  • 我不确定您的编辑是否澄清了任何事情。大多数人认为您的意思是您希望您的应用程序都允许使用存储在单个数据库中的凭据登录。然后你在上面的评论中“澄清”了你在谈论单点登录,这是完全不同的——这更像是用户登录一次,然后无需再次登录就可以访问多个应用程序(因此“单身的”)。它是哪一个?最后,回到我最初的问题——其中哪一部分是 Spring 特有的?

标签: java spring membership


【解决方案1】:

一个数据库可以被多个应用程序访问,包括 Spring 应用程序。只需向每个应用程序提供对该数据库的访问权限,通常是通过数据源(是的,Java 应用程序可以使用多个数据源)。

[编辑] OP 的意图实际上并不清楚。根据一些 cmets,似乎问题可能与 SSO 有关。在这种情况下,我建议查看Spring Security,或者像JA-SIG CASSpring Security with CAS 这样的CAS 实现。

PS:我不是故意粗鲁,但你应该学习How To s The Smart Way。例如在这里,您应该公开您的目标,而不是要求特定的解决方案(请参阅Describe the goal, not the step)。首先,读者无法猜测您没有告诉他们什么,这非常令人沮丧(即使我很乐意提供帮助)。其次,你会得到更好的答案(并避免双方都感到沮丧)。说真的,看看那篇论文,真的很值得。

【讨论】:

  • +1000 建议学习如何提问。 mrblah 每天要问近(或超过)20 个问题,通常没有足够的信息让某人知道他在问什么,并且很少跟进澄清 - 我完全不清楚为什么人们继续玩他的游戏。
  • @mrblah,正如您将在 Pascal 的关于提问的链接中看到的那样,我不想成为您的朋友,我希望您通过做一些工作来尊重人们的时间在提出问题之前,您可以自行决定,然后帮助我们以一种人们知道您在问什么、知道您尝试过什么并知道您的实际问题是什么的方式提出问题。这并不是真的那么难,而且当您需要帮助时,这无疑是获得帮助的更好方式。
【解决方案2】:

当然可以。看看有春天的兵马俑。它允许使用分布式缓存。即您可以写入一个哈希图,然后它会透明地复制到另一个 JVM 实例(即应用程序)上的哈希图。

http://www.springsource.org/node/279

还有谷歌“集群春天”。

您可以将任何内容放入数据结构中:用户信息、角色等。它还为您提供了一个不错的小型集群解决方案,您可以轻松地在应用程序的多个实例之间对会话进行负载平衡。

【讨论】:

    【解决方案3】:

    是的……有点。看看 SpringSecurity。

    我说“有点”是因为 Spring 目前没有为用户帐户管理问题提供现成的解决方案。您可以选择连接到现有解决方案(例如 LDAP)或滚动您自己的“用户详细信息服务”和帐户管理工具。

    此外,SpringSecurity 还没有(AFAIK)真正的“单点登录”解决方案。

    当然,一旦你实现了基于 SpringSecurity 的身份验证/访问控制解决方案,它应该很容易在多个网站上应用它,具有统一的用户帐户基础......或者不。

    EDIT 回应 cmets,当我说 SpringSecurity + LDAP 不是用户帐户管理的现成解决方案时,我的意思是它不是(像 OP 一样)可以只需添加到他的基于 Spring 的 webapps 并部署在 Tomcat / 中。相反,他将不得不

    1. 研究 LDAP 的工作原理,
    2. 选择和 LDAP 实现,
    3. 安装 LDAP 实现,
    4. 根据需要配置和定制 LDAP,
    5. 与 SpringSecurity 集成,
    6. 想办法对他的网络应用实施扩展,以便远程用户可以自行注册、更改密码、更改个人资料等。

    在我看来,如果您已经有企业 LDAP 设置(或者如果您有丰富的 LDAP 专业知识),SpringSecurity + LDAP 是一个很好的解决方案,但它不能很好地满足 OP 对简单解决方案的要求。

    【讨论】:

    • 我很困惑——为什么 Spring Security 对 LDAP 的支持不是用户帐户管理的现成解决方案?话虽如此,这个问题比这更基本; OP 似乎在询问两个 Java 应用程序是否可以使用同一个数据库,这有点令人费解。
    • delfeugo,不,这不是我要问的。我希望 spring 有类似于 asp.net 成员的东西。多个应用可以共享相同的用户群,为每个站点设置不同的角色,等等。
    • 正如我上面所问的,我仍然不清楚您在寻找什么——单点登录?由一组用户支持的身份验证?我真的,真的认为你需要花时间在 Pascal 的“How To s The Smart Way”链接上——这整个事情都是一团糟。
    • @delfuego - 我假设您在上一条评论中正在与 OP 交谈。
    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2011-09-23
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2018-04-12
    相关资源
    最近更新 更多