5

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

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

调用 wkhtmltopdf 从 HTML 生成 PDF

但是,我有一个问题。我们的网站是一个 Intranet 网站并使用 Windows 身份验证。我可以使用 --username 和 --password 将我的凭据传递给 WKHTMLToPDF,并向自己证明该网页是如您所愿生成的。

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

可能的解决方案:

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

我怀疑 3 是我最终会说服的解决方案,但由于这本质上是处理身份验证问题的一个重要解决方法,我非常愿意接受更好的建议或 1 或 2 的帮助!

4

1 回答 1

2

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

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

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

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

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

于 2011-06-14T14:49:41.367 回答