[英]Best way for a remote web app to authenticate users in my current web app?
因此,有一点背景知识,我正在使用一个具有一组用户的现有Web应用程序,这些用户能够通过传统的登录屏幕使用用户名和密码等进行登录。
最近,我们设法为客户(拥有自己的Intranet站点)评分,他们希望能够让其用户登录其Intranet站点,然后让其用户单击Intranet上的链接以重定向到我们的应用程序并自动将其登录。
到目前为止,我对如何实现这一点有两个建议:
总而言之,我追求以下几点:
即使使用SSL,建议的两个选项也不安全。 切勿在URL上传递凭据,而应使用POST将其放入HTTP请求中。
有一个称为SAML的标准,可以用来解决您的问题。 挑战在于选择要实施的版本。 我会选择SAML 2.0 。
Google Apps 实施了一种SAML 2.0,并允许您使用Intranet凭据进行身份验证。 对于您的应用程序,您将是服务提供商,而客户将是身份提供商。 只要正确实施该标准,您就应该能够支持任何新客户端(身份提供者)。 这是您可能需要查看的SAML实现列表 。 如果您需要客户端除身份验证信息之外还传递其他信息,则SAML可以通过元数据来简化此过程。
您仍然需要实施SSL来加密网络流量。
我讨厌回答我自己的问题,但是我更讨厌一个没有答案的问题。 最后,我们使用了非常相似的SalesForce委托身份验证SSO实现的实现。
http://wiki.developerforce.com/page/How_to_Implement_Single_Sign-On_with_Force.com
本质上,该解决方案具有一个受信任的站点,称为委派身份验证授权机构,该站点具有登录到公司内部网的用户列表。
当用户登录公司Intranet并单击指向我们应用程序的链接时,公司Intranet将把用户名和生成的令牌(在设定的时间后过期)传递给我们的应用程序。
然后,我们的应用程序将检查用户名是否在我们的网站上,如果是,则将用户名/令牌(以及源IP和其他一些参数)发送给委派的身份验证机构。 如果所有这些项目在委派的身份验证授权上均匹配,则返回true,并且用户可以登录。如果返回false,则拒绝用户访问。
我们发现该系统运行良好,甚至实现了一些额外的安全功能,例如SSL,客户端证书,VPN隧道,甚至限制了可以访问站点和委托的身份验证机构的IP地址。
我知道回答您自己的问题是一种不好的形式,但我希望这对其他可能遇到相同问题的人有所帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.