NT身份验证登录

问题描述:

我正在一个网站上,用户可以登录以获取更多的私人信息。 我的客户有另一个网站使用nt身份验证访问它。NT身份验证登录

他们想要做的是有我的私人区域下工作的网站,将它们发送到NT验证网站上button,但不要求他们登录到该网站,而不是传递用户名密码他们用来登录我的网站到他们的其他网站。

可以做到这一点吗?我将如何实现它?有一个更好的方法吗?

下面是一个(未经测试的)理论,其细节将很大程度上取决于Sharepoint网站将接受哪种类型的身份验证。我会解决Basic,因为它是最简单的。

您将写出一些使用XMLHttpRequest向Sharepoint网站提交请求并将其用户名和密码添加到请求标头的JavaScript。他们的浏览器将运行该JavaScript,并登录到SharePoint站点。

现在,当他们单击链接时,客户端的浏览器应该有缓存的凭据发送到Sharepoint站点。

可能的问题:

  • 的XMLHttpRequest不允许跨域权威性
  • 浏览器和XHR不共享权威性信息
  • SharePoint和XHR不能在身份验证方法达成一致

另一种选择是将连接代理到Sharepoint,它允许您登录服务器端(绕过XHR限制和浏览器安全性) - 但要求在您的服务器上加载服务器,并且可能需要加载一些UR L目标问题。

其他网站将如何验证您的用户名和密码?

理想情况下,您的网站甚至不应该记住用户的密码,以便能够将其传递到另一个站点(您存储密码散列,而不是密码本身,并且仅在验证期间使用实际密码)。

如果您的网站向用户提供了一个令牌,该用户向新网站展示该令牌,然后又要求您的网站验证该令牌。基本上第二个网站是相信你告诉他们谁是用户。

如果第二个站点实际上使用的是Windows帐户除了仅检索用户名(例如对基础文件的权限)以外的其他任何内容,因为用户没有以实际的Windows用户帐户登录在这种情况下。

如果您需要对第二个站点进行身份验证,则可能需要生成一个新线程并调用Windows LogonUser API。一旦拥有安全令牌,将其分配给新线程并通过该线程进行连接。

LogonUser需要增强的权限,而不是托管代码,所以使用它有一些非常严重的打嗝。但这是我唯一能够找到的方式,以获得经过Windows身份验证的服务/站点的Forms身份验证网站。

希望这会有所帮助。

这是一个Intranet环境吗?如果是这样,他们不应该无论如何登录。如果使用“集成身份验证”设置Sharepoint并且该站点在IE中被列为可信站点,则浏览器将使用该网络信誉进行自动登录。这也可以在firefox上设置。

您的用户将无法直接连接到NTLM站点而不会收到NTLM质询。我会写什么实际上是NTLM网站的代理;即您的服务器端代码将拥有连接到NTLM站点的凭证,并且会通过用户的请求。

正如你所说的是SharePoint()请记住,SharePoint有一堆Web服务,您可以使用此(而不是屏幕抓取)。