我是在一个网站上的用户可以登录,以获得更多的私人信息。我的客户还有另外一个站点,它使用nt身份验证来访问它。
他们想要做的是在我正在工作的站点上设置一个button,将其发送到经过nt身份验证的站点,但不要求他们登录到该站点,而是将用于登录到我的站点的用户名和密码传递给其他站点。
有可能这样做吗?我该怎么做呢?有更好的方法吗?
发布于 2008-09-04 21:22:09
这里有一个(未经测试的)理论,其细节将在很大程度上取决于Sharepoint站点将接受何种类型的身份验证。我将处理基础知识,因为这是最简单的。
您将编写一些使用JavaScript向Sharepoint站点提交请求的XMLHttpRequest,并将它们的用户名和密码添加到请求头中。他们的浏览器将运行该JavaScript,并登录到Sharepoint站点。
现在,当他们点击链接时,客户机的浏览器应该有缓存的凭证发送到Sharepoint站点。
可能的问题:
另一种选择是代理到Sharepoint的连接,它允许您登录服务器端(绕过XHR限制和浏览器安全性)--但是需要在服务器上加载,可能还需要一些URL目标问题。
发布于 2008-09-04 16:49:51
其他网站将如何验证您的用户名和密码?
理想情况下,您的站点甚至不应该记住用户的密码才能将其传递到另一个站点(您存储密码的散列,而不是密码本身,并且只在验证期间使用实际密码)。
如果您的站点向用户提供了一个令牌,用户会向新站点显示该令牌,而用户又会要求您的站点验证该令牌。基本上,第二个网站是信任你告诉他们谁是用户。
如果第二个站点实际上只是检索用户名(例如对基础文件的权限)以外的任何其他用途,则所有这些都会崩溃,因为在此场景中,用户没有以实际Windows用户帐户的身份登录。
发布于 2008-09-04 20:58:42
如果需要针对第二个站点进行身份验证,则可能需要生成一个新线程并调用windows。获得安全令牌后,将其分配给新线程,并通过该线程进行连接。
LogonUser需要增强的特权,并且不是托管代码,所以使用它有一些相当严重的问题。但这是我找到的唯一一项工作,可以让表单验证的站点与Windows身份验证的服务/站点进行对话。
希望这能有所帮助。
https://stackoverflow.com/questions/44102
复制相似问题