代码之家  ›  专栏  ›  技术社区  ›  Jeremy Goodell

Web应用程序的单一登录

  •  17
  • Jeremy Goodell  · 技术社区  · 16 年前

    一个多月来,我一直在努力理解这个问题是如何解决的。我真的需要想出一个可行的通用方法。我有一个理论,但我只是不确定这是最简单(或正确)的方法,我还没有找到任何信息来支持我的想法。

    下面是场景:

    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相关联的应用程序),我将非常感谢。我想知道其他的B2B网络应用程序,比如salesforce.com,或者hoovers.com,是否也为他们的公司客户提供类似的服务。

    我不喜欢呆在黑暗中,我会非常感激你能发出的任何光芒…

    杰瑞米

    2 回复  |  直到 14 年前
        1
  •  3
  •   John    16 年前

    Shibboleth 旨在完全支持此方案。但是,它将依赖于客户的公司实现身份提供者机制。目前,这只在大学里很普遍。此外,如果您想要用户信息(不仅仅是假名标识符),您需要公司同意向您发布这些属性。

    我发现很难相信很多公司会向您开放他们的企业认证系统,仅仅是为了提供SSO。

    你可能会发现依靠它更好 OpenID 或者类似的,使用“记住我”cookie来减少人们输入密码的需要。

        2
  •  2
  •   Bob    16 年前

    你的方法的一个基本问题是你在孤立地考虑你的web应用。客户公司的员工不仅需要对您的Web应用程序使用SSO,还需要对一些/少数/许多其他应用程序使用SSO,并且扩展您的方法需要为每个应用程序都定制一个实现来启用访问。

    因此,在学术图书馆界广泛采用OpenAthens和Shibboleth来利用当地颁发的证书。一所典型的大中型大学可以订阅来自50多个不同出版商的各种产品/服务,通过部署OpenAthens/Shibboleth,他们可以利用SAML开放标准(SAML是Shibboleth使用的协议),这种标准不仅在学术领域,而且在商业领域的应用也有所增加。托尔。

    上面约翰的回答指向另一个问题:最近出现了许多开放标准,其中包括SAML和OpenID。因此,内容提供商必须决定他们是想以本机方式实现其中的一部分还是全部,但是他们使用单独的技术栈,因此实现和支持成本可以重复。

    相当多的主要出版商已经实施了 OpenAthens 因为它在一个平台上支持雅典、Saml/Shibboleth和OpenID,还可以选择插入其他技术,或者编写一个自定义模块来允许内部应用程序连接,例如发票或授权系统记录客户的用户登录。

    这一访问管理领域无疑正朝着开放标准迈进,因此构建您自己的方法将使大量用户无法访问您的应用程序。