所以有一点背景知识,我正在开发一个现有的Web应用程序,它有一组用户,可以通过传统的登录界面登录用户名和密码等。
最近,我们设法为客户(拥有自己的Intranet网站)打分,他们希望能够让用户登录他们的Intranet网站,然后让他们的用户点击他们的Intranet上的重定向链接到我们的应用程序并自动将它们记录到它。
到目前为止,我有两条关于如何实现这一点的建议:
总而言之,我正在完成以下事项:
答案 0 :(得分:2)
即使您使用SSL,您建议的两个选项也都不安全。永远不要传递URL上的凭据,使用POST将它们放入HTTP请求中。
有一个名为SAML的标准,可用于解决您的问题。挑战在于选择要实施的版本。我会选择SAML 2.0。
Google Apps implements一种SAML 2.0,允许您使用Intranet凭据进行身份验证。对于您的应用程序,您将成为服务提供商,您的客户将成为身份提供商。只要您正确实施标准,您就应该能够支持任何新客户端(身份提供商)。以下是您可能需要查看的list SAML实现。如果除了身份验证信息之外,您还需要客户端传递信息,那么SAML可以通过元数据为此提供便利。
您仍然需要实施SSL来加密网络流量。
答案 1 :(得分:0)
我讨厌回答我自己的问题,但我更讨厌一个没有答案的问题。最后,我们使用了SalesForce的委托身份验证SSO实现的非常类似的实现。
http://wiki.developerforce.com/page/How_to_Implement_Single_Sign-On_with_Force.com
本质上,该解决方案具有一个受信任的站点,称为委派的身份验证权限,其中包含登录到公司Intranet的用户列表。
当用户登录公司内部网并点击指向我们应用程序的链接时,公司内部网将把用户名和生成的令牌(在一段时间后过期)传递给我们的应用程序。
我们的应用程序将检查用户名是否在我们的站点上,如果是,则将用户名/令牌(以及源IP和一些其他参数)发送到委派的身份验证机构。如果所有这些项在委派的身份验证权限上匹配,则返回true,用户可以登录。如果返回false,则拒绝用户访问。
我们发现这个系统运行良好,甚至还实现了一些额外的安全功能,如SSL,客户端证书,VPN隧道,甚至限制可以访问站点和委派身份验证权限的IP地址。
我知道回答你自己的问题是不好的形式,但我希望这可以帮助其他可能遇到同样问题的人......