我正在一个用户可以登录的网站上获取更多私人信息。 我的客户端有另一个使用 nt authentication 访问它的网站。
他们想要做的是在我正在私有区域下工作的网站上button
,将他们发送到 nt身份验证的网站,但不要求他们登录转到该网站,而不是将用于登录我网站的用户名和密码传递给其他网站。
有可能这样做吗?我将如何实现它?有更好的方法吗?
答案 0 :(得分:1)
这是一个(未经测试的)理论,其细节将在很大程度上取决于Sharepoint网站将接受哪种类型的身份验证。我将解决Basic,因为它是最简单的。
您将编写一些使用XMLHttpRequest向Sharepoint站点提交请求的JavaScript,并将其用户名和密码添加到请求标头中。他们的浏览器将运行该JavaScript,并登录到Sharepoint站点。
现在,当他们点击链接时,客户端的浏览器应该有缓存的凭据发送到Sharepoint站点。
可能的问题:
另一种选择是代理与Sharepoint的连接,允许您登录服务器端(绕过XHR限制和浏览器安全性) - 但需要在服务器上加载,并可能需要一些URL目标问题。
答案 1 :(得分:0)
其他网站如何验证您的用户名和密码?
理想情况下,您的网站甚至不应该记住用户的密码,以便能够将密码传递到另一个网站(您存储密码的哈希值,而不是密码本身,并且在验证期间仅使用实际密码)。
如果您的网站向用户提供了令牌,该令牌会将该令牌提供给新网站,从而要求您的网站验证令牌,该怎么办?基本上第二个网站信任你告诉他们用户是谁。
如果第二个站点实际上使用Windows帐户除了检索用户名以外的任何其他内容(例如基础文件的权限),这一切都会崩溃,因为用户没有以实际的Windows用户帐户登录这种情况。
答案 2 :(得分:0)
如果需要对第二个站点进行身份验证,则可能需要生成一个新线程并调用Windows LogonUser API。获得安全令牌后,将其分配给新线程并通过该线程进行连接。
LogonUser需要增强的权限,而不是托管代码,因此使用它有一些非常严重的问题。但这是我唯一能够找到一个经过Forms认证的站点与Windows认证服务/站点通信的工作。
希望这有帮助。
答案 3 :(得分:0)
这是一个内联网环境吗?如果是这样,他们不应该不得不登录。如果使用“集成身份验证”设置sharepoint并且该站点在IE中列为可信站点,则浏览器将使用网络信号进行自动登录。这也可以在firefox上设置。
答案 4 :(得分:0)
如果没有遇到NTLM质询,您的用户将无法直接连接到NTLM网站。我会写一些有效的NTLM网站代理;即您的服务器端代码将具有连接到NTLM站点的凭据,并且它会传递来自用户的请求。
正如您所提到的那样,SharePoint( spit )请记住,SharePoint有一堆可以用于此的Web服务(而不是屏幕抓取)。