Rotativa + WkhtmltoPDF + ADFS 不呈现 PDF
Rotativa + WkhtmltoPDF + ADFS not rendering PDF
我有一个 ASP.net MVC 应用程序,在引入 ADFS 身份验证后,我无法将 MVC 视图呈现为 PDF。
早些时候,该应用程序使用 Rotativa(使用 WkhtmltoPDF 库)进行表单身份验证和 PDF 呈现,效果非常好。在引入 ADFS 之后,它就无法工作了。
我得到的是一个空白 PDF,标题为:"Sign In" page/PDF 本身没有任何元素。
因为它非常表明它试图连接到某个地方,所以我认为问题出在 WkhtmltoPDF 的身份验证参数中的某个地方,即我可能必须添加一些额外的参数才能支持 ADFS,但我不确定是哪个那些。我已经尝试使用 --username 和 --password 参数,但它们没有帮助。
问题是:如何让它(再次)工作?
尝试在调用您转换为 PDF 的视图的操作上使用 [AllowAnonymous]
属性
例子:
对于调用 rotativa 的操作,你可能会有这样的东西
return new Rotativa.ViewAsPdf("ViewToPdf", model);
调用的操作看起来像
[AllowAnonymous]
public ActionResult ViewToPdf(ViewModel model)
{
return View(model);
}
希望你能理解我的格式
我无法按照我想要的方式解决问题,但对于那些对解决方案感兴趣的人,接下来的步骤描述了我所做的。
由于我尝试使用 Rotativa 呈现的页面需要身份验证,因此我添加了创建一个 "one-time access token" 的逻辑,它将用户重定向到呈现相同页面但没有任何 ADFS 身份验证检查的另一个应用程序。在这种情况下,您必须将 Rotativa 的逻辑修改为 return UrlAsPdf
而不是 ActionAsPdf
.
我做的唯一授权是检查令牌的有效性。由于令牌的过期时间很快(仅在接下来的几分钟内有效),我认为 Web 应用程序的安全性不会受到负面影响,因为没有访问令牌,没有人可以在没有身份验证的情况下访问该版本。
我有一个 ASP.net MVC 应用程序,在引入 ADFS 身份验证后,我无法将 MVC 视图呈现为 PDF。
早些时候,该应用程序使用 Rotativa(使用 WkhtmltoPDF 库)进行表单身份验证和 PDF 呈现,效果非常好。在引入 ADFS 之后,它就无法工作了。
我得到的是一个空白 PDF,标题为:"Sign In" page/PDF 本身没有任何元素。
因为它非常表明它试图连接到某个地方,所以我认为问题出在 WkhtmltoPDF 的身份验证参数中的某个地方,即我可能必须添加一些额外的参数才能支持 ADFS,但我不确定是哪个那些。我已经尝试使用 --username 和 --password 参数,但它们没有帮助。
问题是:如何让它(再次)工作?
尝试在调用您转换为 PDF 的视图的操作上使用 [AllowAnonymous]
属性
例子:
对于调用 rotativa 的操作,你可能会有这样的东西
return new Rotativa.ViewAsPdf("ViewToPdf", model);
调用的操作看起来像
[AllowAnonymous]
public ActionResult ViewToPdf(ViewModel model)
{
return View(model);
}
希望你能理解我的格式
我无法按照我想要的方式解决问题,但对于那些对解决方案感兴趣的人,接下来的步骤描述了我所做的。
由于我尝试使用 Rotativa 呈现的页面需要身份验证,因此我添加了创建一个 "one-time access token" 的逻辑,它将用户重定向到呈现相同页面但没有任何 ADFS 身份验证检查的另一个应用程序。在这种情况下,您必须将 Rotativa 的逻辑修改为 return UrlAsPdf
而不是 ActionAsPdf
.
我做的唯一授权是检查令牌的有效性。由于令牌的过期时间很快(仅在接下来的几分钟内有效),我认为 Web 应用程序的安全性不会受到负面影响,因为没有访问令牌,没有人可以在没有身份验证的情况下访问该版本。