【问题标题】:Rotativa + WkhtmltoPDF + ADFS not rendering PDFRotativa + WkhtmltoPDF + ADFS 不呈现 PDF
【发布时间】:2016-05-20 12:46:55
【问题描述】:

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

之前,该应用程序使用 Rotativa(使用 WkhtmltoPDF 库)进行表单身份验证和 PDF 渲染,效果非常好。在引入 ADFS 之后,它就无法工作了。

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

因为它非常表明它试图连接到某个地方,我相信问题出在 WkhtmltoPDF 的身份验证参数的某个地方,即我可能必须添加一些额外的参数才能支持 ADFS,但我不确定哪些参数。我已经尝试过使用 --username--password 参数,但它们没有帮助。

问题是:怎样才能让它(再次)发挥作用?

【问题讨论】:

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


    【解决方案1】:

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

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

    调用的动作看起来像

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

    希望你能理解我的格式

    【讨论】:

    • 不幸的是,它无法正常工作,因为正在呈现的页面需要身份验证。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2017-04-21
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多