简体   繁体   中英

NReco CustomWkHtmlArgs bearer token

Working with NReco.PdfGenerator.HtmltoPdfConverter and recently implemented OAuth with Bearer tokens. After implementing and securing my ApiControllers the converter started throwing the following error.

WkHtmlToPdfException: Exit with code 1 due to network error: AuthenticationRequiredError (exit code: 1)

After some snooping I discovered I could add custom header parameters and so I grabbed the bearer token and appended it to the CustomWkHtmlArgs

This is what I have to far.

        htmlToPdf.CustomWkHtmlArgs = "-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000";

        FileHandlingModule.deleteFile(savePath);

        //Get Auth Token
        var accessToken = "Bearer " + Request.Headers.Authorization.Parameter;

        htmlToPdf.CustomWkHtmlArgs += " --custom-header Authorization: " + accessToken;
        htmlToPdf.GeneratePdfFromFile(purl, null, savePath);

This is what the CustomWkHtmlArgs this is what the args string look like.

-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000 --custom-header Authorization: Bearer YHE7HJEh_Hk0wazErUK6DIGcCG7-GRDHBEWRA-ju9hewqPk9cjY3zH5MT....

The token has been shortened for brevity. I've tried removing the colon and I still get the AuthRequiredError. Is anyone familiar with passing header auth tokens?

First of all try to pass header value in quotes:

htmlToPdf.CustomWkHtmlArgs += " --custom-header \"Authorization\" \"" + accessToken + "\"";

If this header is needed to access page resources (images, css, ajax calls) option "--custom-header-propagation" should be specified too.

BTW, have you tried your to test your custom header with wkhtmltopdf from the command line? Also, you can handle htmlToPdf.LogReceived event and get wkhtmltopdf console log output - it might be useful for debug purposes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM