12

我必须将我的客户从一个网站转移到另一个网站。这发生在客户端。在这个第二个网站,它使用windows基本认证系统。所以它会弹出登录窗口。我需要省略此弹出窗口并使用 javascript 在第二个网站上验证我的客户端,然后将他重定向到第二个网站。即使我将凭据放入 javascript 文件中也没有安全问题,因为整个系统都在 Intranet 中运行。那么如何在第二个网站上验证客户端?

我找到了这个线程 How can I pass windows authentication to webservice using jQuery?

但它不起作用。当我查看第二个 url 的请求标头时,它不包含授权标记。

4

3 回答 3

16

如果它是基本身份验证并且您不介意公开凭据,为什么不简单地将用户名和密码插入 URL 中?例如:

http://username:password@www.domain.com

但是,如果您可以控制 Web 服务器,则确实应该禁用 Intranet 连接的身份验证。

于 2011-08-21T12:00:23.620 回答
4

如果它是基于 Windows 的 Intranet,我不会使用 Javascript,而是使用默认的 NTLM-Authentication,如该线程中所述。这样,您可以使用网络用户的正常用户名和密码为任意数量的站点提供单点登录。从另一个线程引用我的答案:

NTLM 身份验证实际上是可能的。您需要AuthenNTLM -plugin,它将使用 Internet Explorer 对用户进行身份验证。一个示例语法是

<Location />
    PerlAuthenHandler Apache::AuthenNTLM 
    AuthType ntlm,basic
    AuthName test
    require valid-user

    #                    domain             pdc                bdc
    PerlAddVar ntdomain "name_domain1   name_of_pdc1"
    PerlAddVar ntdomain "other_domain   pdc_for_domain    bdc_for_domain"

    PerlSetVar defaultdomain wingr1
    PerlSetVar ntlmdebug 1
</Location>
## taken from the documentation

有关设置的更多选项和具体说明,请参阅模块文档- 以上内容应该让您朝着正确的方向开始。

在客户端,Internet Explorer 和 Firefox 应该能够在一些配置后自动登录(Firefox 需要特别注意- 这可以通过在部署期间设置配置变量来实现)。

于 2011-08-27T16:43:11.743 回答
2

如果这是 Windows 身份验证,则响应不会提示客户端输入凭据,浏览器将尝试自己传递凭据。它不像 HTTP 那样工作——您实际上需要将浏览器本身配置为让它根据 Windows 凭据发送授权。

似乎根本没有一个简单的 JS 解决方案。

于 2011-08-27T04:46:24.167 回答