身份验证 – 远程Web应用程序在当前Web应用程序中对用户进行身份验证的最佳方式?

所以有一些背景知识,我正在开发一个现有的Web应用程序,它有一组用户,可以通过传统的登录界面登录用户名和密码等.

最近我们设法为一个客户(拥有自己的Intranet站点)打分,他们希望能够让他们的用户登录他们的Intranet站点,然后让他们的用户点击他们的Intranet上的链接重定向到我们的应用程序并自动将其记录到其中.

到目前为止,我有两条关于如何实现这一点的建议:

>创建一个带有2个参数(“用户名”和“密码”)的URL,并让Intranet站点将这些参数传递给我们(我们的连接是通过SSL / TLS进行加密的).这样可以正常工作,但它似乎有点“hacky”,并且还意味着两个系统上的登录名和密码必须相同(并且必须编写某种可以更新用户密码的Web服务 – 这也是看起来有点不安全)
>向Intranet提供令牌,因此当客户端点击Intranet上的链接时,它会将令牌以及用户名(并且没有密码)发送给我们,这意味着他们已经过身份验证.再次,这听起来有点hacky,因为与提供每个人使用相同的密码登录基本相同?

总而言之,我追求的是以下几点:

>已经在Intranet上进行身份验证的用户登录我们的系统的方法,没有太多麻烦,也没有使用外部系统进行身份验证,即LDAP / Kerberos
>对于此客户端来说不太具体的东西,并且可以由其他内部网轻松实现登录

最佳答案 即使您使用SSL,您建议的两个选项也都是不安全的.永远不要传递URL上的凭据,使用POST将它们放入HTTP请求中.

有一个名为SAML的标准,可用于解决您的问题.挑战在于选择要实施的版本.我会选择SAML 2.0.

Google Apps implements是一种SAML 2.0,允许您使用Intranet凭据进行身份验证.对于您的应用程序,您将成为服务提供商,您的客户将成为身份提供商.只要您正确实施标准,您就应该能够支持任何新客户端(身份提供商).以下是您可能想要查看的list SAML实现.如果除了身份验证信息之外,您还需要客户端传递信息,那么SAML可以通过元数据为此提供便利.

您仍然需要实施SSL来加密网络流量.

点赞