我有一个ASP.net MVC应用程序,在引入ADFS身份验证后,我无法将MVC视图呈现为PDF格式。
早些时候,该应用程序使用Rotativa(使用WkhtmltoPDF库)进行表单身份验证和PDF呈现,就像一个魅力。在引入ADFS之后它就行不通了。
我得到的是一张空白PDF,标题为:“登录”页面上没有任何元素/ PDF本身。
因为它很好地表明它试图连接到某个地方我认为问题出现在WkhtmltoPDF的认证参数中,即我可能需要添加一些额外的参数以支持ADFS,但我不确定哪些。我已经尝试使用 - 用户名和 - 密码参数,但他们没有帮助。
问题是:如何使其发挥作用(再次)?
答案 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应用程序的安全性受到负面影响,因为没有访问令牌,没有人可以在没有身份验证的情况下访问该版本。