使Windows身份验证和WKHTMLToPDF发挥得很好

Joh*_*lly 5 asp.net pdf-generation ntlm windows-authentication wkhtmltopdf

我面临着从ASP.NET网站上的HTML页面生成PDF的任务.(用户可以节省/打印的东西)

我发现WKHTMLToPDF很好地完成了这项工作:

调用wkhtmltopdf从HTML生成PDF

但是,我有一个问题.我们的网站是一个Intranet站点,使用Windows身份验证.我可以使用--username和--password将我的凭据传递给WKHTMLToPDF,并向我自己证明网页是按照您的希望生成的.

问题是:如何为进入我们系统的每个不同用户做些什么?我可以想到一些可能/可能不起作用的可能解决方案,我希望有人可以给我一些意见/指导,因为我似乎已经结束了我的研究.

可能的解决方案:

  1. 在ASP.NET中是否有任何方法可以从用户凭据中提取用户名和密码以传入WKHTMLToPDF?我怀疑这个问题的答案是"不,而且出于明智的原因"
  2. 是否可以运行Process并通过Users凭据?我可以看到可以在进程中设置用户名/密码(虽然我不知道如何从凭证中传递这个,因为密码似乎没有公开).也许还有另一种方法可以直接将凭证传递给Process?
  3. 我可以创建一个单独的PDFGenerator网站,它不使用Windows身份验证.然后,我可以将安全网站中的HTML/CSS /图像移植到共享目录,然后将用户重定向到PDFGenerator网站以实际从HTML生成PDF,而不必担心身份验证(并且会在PDF之后清理HTML等)生成).

我怀疑3的是,我最终会persuing的解决方案,但因为这是一个基本的解决方法大处理认证问题,我对1或2个更好的建议或帮助非常开放!

小智 2

您可以在 web.config 中设置模拟:

http://msdn.microsoft.com/en-us/library/aa292118%28v=vs.71%29.aspx

这意味着执行的任何操作都是以用户身份完成的。但在某些情况下这可能会导致问题。这意味着该网站正在使用该会话的用户凭据而不是应用程序池的身份运行,并且您必须跳过重重困难才能将 Web 应用程序设置为正常运行且仍然安全。

您应该注意,在大多数正常配置下,您运行的任何内容都将采用应用程序池的凭据。您可以更改应用程序池的帐户。这可能允许您通过仅允许运行应用程序池的用户进行访问来锁定事物。

其他替代方案可能是除了使用模拟的主应用程序之外还有另一个应用程序。这可能比将整个应用程序转换为使用模拟更容易管理。(我没有你的项目的详细信息,所以很难在这里提出具体的建议。)