【问题标题】:Making Windows Authentication and WKHTMLToPDF play nice让 Windows Authentication 和 WKHTMLToPDF 玩得很好
【发布时间】:2011-09-14 12:46:35
【问题描述】:

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

看了这个,我发现 WKHTMLToPDF 做得很好:

Calling wkhtmltopdf to generate PDF from HTML

但是,我有一个问题。我们的网站是一个 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 提供更好的建议或帮助!

【问题讨论】:

    标签: asp.net pdf-generation windows-authentication ntlm wkhtmltopdf


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 这并不能完全满足我的需求,但它与我目前在原型中使用的方法并没有什么不同。本质上,我有一个用于身份验证的虚拟 Windows 帐户。因此,我将帐户信用以加密形式存储在 web.config 中,并在调用 wkhtmltopdf 时使用它们。不光彩,但它似乎工作,所以我可以使用它...
    猜你喜欢
    • 2014-03-18
    • 2011-09-17
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多