一个Web应用的单点登录

18

我已经试图理解如何解决这个问题一个月了。我真的需要想出一个通用方法。我有一个理论,但我不确定它是否是最简单(或正确)的方法,而且我一直没有找到任何支持我的想法的信息。

以下是情景:

1)您拥有一个复杂的Web应用程序,提供订阅基础上的安全内容。

2)用户需要使用用户名和密码登录您的应用程序。

3)您向大型企业销售,这些企业已经拥有企业认证技术(例如Active Directory)。

4)您希望集成企业认证机制,允许他们的用户登录到您的Web应用程序,无需输入用户名和密码。

现在,您想出的任何解决方案都必须提供以下机制:

  • 添加新用户
  • 删除用户
  • 更改用户信息
  • 允许用户登录

理想情况下,当企业客户对其自身的认证进行相应更改时,所有这些变化都会自动发生。

现在,我有一个理论,即至少适用于Active Directory的方法是编写一个客户端应用程序,与客户的Active Directory集成以跟踪目标更改,然后将这些更改通信到我的Web应用程序。我认为,如果此通信通过我的Web应用程序提供的Web服务完成,那么它将保持不可破坏的安全级别,这显然是这些企业客户的要求。

我找到了一些有关名为Active Directory联合身份验证服务(ADFS)的Microsoft产品的信息,这可能是正确的方法,但它似乎有些臃肿,并且可能不适用于所有客户的要求。

对于其他现有的ID场景(例如Athens和Shibboleth),我不认为需要一个客户端应用程序。这可能只是将现有的ID服务绑定在一起的问题。

我希望有关于我提到的任何问题的建议。 特别是,如果您可以告诉我关于提供与服务器端Web服务通信的客户端应用程序的理论是否正确,或者我完全走错了方向。 此外,如果您可以指出任何解释如何执行此操作的网站或文章,我会非常感激。 到目前为止,我的研究成果不多。

最后,如果您能让我知道当前提供此服务的任何Web应用程序(特别是与企业Active Directory相关联的Web应用程序),我将不胜感激。 我想知道其他B2B Web应用程序(例如salesforce.com或hoovers.com)是否为其企业客户提供类似的服务。

我讨厌在黑暗中,非常感谢您能提供的任何信息...

杰里米


我很好奇为什么昨天有人对这个问题进行了负投票。能否发表评论? - Jeremy Goodell
请注意,该帖子被发表两年后才有人踩它。巧合的是(也许?),踩帖子的人可能是第一千个浏览者。 - Jeremy Goodell
我正在寻找非常相似的东西。你解决了这个问题吗?请分享任何关于如何实现这一目标的见解。 - Gala101
@Gala101 抱歉,实际上并没有。我最终离开了原本应该完成这项任务的公司,所以这对我来说不再是一个优先事项。 - Jeremy Goodell
这个问题与https://dev59.com/22445IYBdhLWcg3w3Nwf和https://dev59.com/B1_Va4cB1Zd3GeqPTnug非常相似。 - Simon East
2个回答

3

Shibboleth旨在支持这种情况。但是,它将依赖于您客户公司实施身份提供者机制。目前,这只在大学中真正普遍。此外,如果您需要用户信息(除了伪匿名标识符之外的任何信息),您需要让公司同意向您发布这些属性。

我觉得很难相信许多公司会向您开放其企业认证系统,仅提供SSO。

您可能会发现,依赖OpenID或类似技术,并使用“记住我”cookie来减少人们输入密码的需求更好。


2
你的方法存在一个基本问题,就是你只考虑了你的网络应用本身。你客户公司的员工不仅需要单点登录到你的网络应用,还需要访问其他一些/几个/许多应用。扩展你的方法需要为每个应用定制实现以启用访问。
因此,在学术图书馆界广泛采用OpenAthens和Shibboleth来利用本地颁发的凭据。一个典型的中大型大学可以订阅来自50多个不同出版商的各种产品/服务,通过部署OpenAthens/Shibboleth,他们可以利用SAML开放标准(SAML是Shibboleth使用的协议),该标准不仅在学术界得到了广泛应用,而且在商业领域也越来越受到重视。
John上面的回答指出了另一个问题:最近出现了许多开放标准,其中包括SAML和OpenID等。因此,内容提供商必须决定是否要本地实现其中一些或全部,但它们使用不同的技术栈,因此实施和支持成本可能会重复。
许多主要的出版商已经实施了OpenAthens,因为它支持Athens、SAML/Shibboleth和OpenID在一个平台上,还可以插入其他技术选项,或编写自定义模块以允许内部应用程序连接,例如记录哪些客户的用户正在登录的发票或授权系统。
这个访问管理领域肯定正在向开放标准方向发展,因此建立自己的方法将剥夺大量用户访问您的应用程序的权利。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接