Rotativa + WkhtmltoPDF + ADFS无法呈现PDF

时间:2016-05-20 12:46:55

标签: asp.net-mvc pdf wkhtmltopdf rotativa adfs3.0

我有一个ASP.net MVC应用程序,在引入ADFS身份验证后,我无法将MVC视图呈现为PDF格式。

早些时候,该应用程序使用Rotativa(使用WkhtmltoPDF库)进行表单身份验证和PDF呈现,就像一个魅力。在引入ADFS之后它就行不通了。

我得到的是一张空白PDF,标题为:“登录”页面上没有任何元素/ PDF本身。

enter image description here

因为它很好地表明它试图连接到某个地方我认为问题出现在WkhtmltoPDF的认证参数中,即我可能需要添加一些额外的参数以支持ADFS,但我不确定哪些。我已经尝试使用 - 用户名 - 密码参数,但他们没有帮助。

问题是:如何使其发挥作用(再次)?

2 个答案:

答案 0 :(得分:1)

尝试在调用您转换为PDF的视图的操作上使用[AllowAnonymous]属性 例: 对于调用rotativa的动作,你可能会有这样的事情

return new Rotativa.ViewAsPdf("ViewToPdf", model);

并且调用的操作看起来像

[AllowAnonymous]
public ActionResult ViewToPdf(ViewModel model)
{
     return View(model);
}

我希望你理解我的格式

答案 1 :(得分:0)

我无法按照我想要的方式解决问题,但对于那些对解决方案感兴趣的人,接下来的步骤描述了我的所作所为。

当我尝试使用Rotativa渲染的页面需要身份验证时,我添加了逻辑来创建一次性访问令牌"它将用户重定向到呈现相同页面但没有任何ADFS身份验证检查的另一个应用程序。在这种情况下,您必须修改Rotativa的逻辑才能返回UrlAsPdf而不是ActionAsPdf

我做的唯一授权是检查令牌的有效性。由于令牌具有快速过期时间(仅在接下来的几分钟内有效),我不认为Web应用程序的安全性受到负面影响,因为没有访问令牌,没有人可以在没有身份验证的情况下访问该版本。