问题描述
||
我面临着从ASP.NET网站上的HTML页面生成PDF的任务。 (用户可以很好地节省/打印一些内容)
通过查看以下内容,我发现WKHTMLToPDF可以很好地完成此工作:
调用wkhtmltopdf从HTML生成PDF
但是,我有一个问题。我们的网站是一个Intranet网站,并使用Windows身份验证。我可以使用--username和--password将凭据传递给WKHTMLToPDF,并向自己证明该网页是您希望的。
问题是这样的:对于进入我们系统的每个不同用户该怎么做?我可以想到许多可能/可能行不通的解决方案,我希望有人可以给我一些意见/指导,因为我似乎已经结束了研究。
可能的解决方案:
在ASP.NET中,有什么方法可以从用户凭据中提取用户名和密码以传递到WKHTMLToPDF?我怀疑答案是“不,出于明智的原因”
是否可以运行流程并通过用户凭据?我可以看到可以在进程中设置用户名/密码(尽管我不知道如何从凭据中传递用户名/密码,因为密码似乎没有公开)。也许还有另一种直接将凭证传递给Process的方法?
我可以创建一个不使用Windows身份验证的单独的PDFGenerator网站。然后,我可以将HTML / CSS /图像从受保护的网站移植到共享目录,然后将用户重定向到PDFGenerator网站,从而从HTML实际生成PDF,而不必担心身份验证(并且在PDF之后会清理HTML等)生成)。
我怀疑3是最终要解决的解决方案,但是由于这实际上是解决身份验证问题的一种重要解决方法,因此我很乐意接受更好的建议或寻求1或2的帮助!
解决方法
您可以在web.config中设置模拟:
http://msdn.microsoft.com/zh-CN/library/aa292118%28v=vs.71%29.aspx
这意味着所有执行的操作都由用户完成。尽管在某些情况下,这可能会导致问题。这意味着该站点正在使用该会话的用户凭据而不是应用程序池的身份来运行,并且您将不得不越过障碍来设置Web应用程序以使其正常运行并且仍然安全。
您应该注意,在大多数正常配置下,您运行的所有内容都将采用应用程序池的凭据。您可以更改应用程序池的帐户。通过仅允许正在运行应用程序池的用户进行访问,这可以使您保持锁定状态。
其他选择可能是除了使用模拟的主应用程序外还有另一个应用程序。这可能比将整个应用程序转换为使用模拟更容易管理。 (我没有您的项目的详细信息,因此很难在此处提出具体建议。)