Направете Windows Authentication и WKHTMLToPDF да играят добре

Изправен съм пред задачата да генерирам PDF от HTML страница на уебсайт на ASP.NET. (Нещо, което потребителите могат да запазят/отпечатат добре)

Открих, че WKHTMLToPDF върши работата много добре, след като разгледах това:

Извикване на wkhtmltopdf за генериране на PDF от HTML

Обаче имам проблем. Нашият уебсайт е интранет сайт и използва Windows Authentication. Мога да предам идентификационните си данни на WKHTMLToPDF с помощта на --username и --password и да демонстрирам на себе си, че уеб страницата е генерирана, както се надявате.

Проблемът е следният: Какво да правим за всеки различен потребител, който влиза в нашата система? Мога да се сетя за редица възможни решения, които може / може да не работят и се надявах някой да ми даде някакво мнение/насоки, тъй като изглежда съм стигнал до края на моите проучвания.

Възможни решения:

  1. Има ли някакъв начин в ASP.NET, по който мога да извлека потребителско име и парола от потребителските идентификационни данни за преминаване в WKHTMLToPDF? Подозирам, че отговорът на това е „не и поради разумни причини“
  2. Възможно ли е да стартирате процеса и да преминете през идентификационните данни на потребителите? Виждам, че е възможно да се зададе потребителско име / парола на процеса (въпреки че не знам как бих предал това от идентификационните данни, тъй като паролата изглежда не е изложена). Може би има друг метод за предаване на идентификационни данни директно на процеса?
  3. Мога да създам отделен уебсайт на PDFGenerator, който не използва Windows удостоверяване. След това бих могъл да пренеса HTML/CSS/изображенията от защитения уебсайт в споделена директория и след това да пренасоча потребителите към уебсайта на PDFGenerator, за да генерирам действително PDF от HTML, без да се налага да се притеснявам за удостоверяване (и ще изчистя HTML и т.н. след PDF генерирани).

Подозирам, че 3 е решението, което в крайна сметка ще преследвам, но тъй като това по същество е едно голямо решение за справяне с проблема с удостоверяването, аз съм много отворен за по-добри предложения или помощ за 1 или 2!


person John Reilly    schedule 14.06.2011    source източник


Отговори (1)


Можете да настроите имитация в web.config:

http://msdn.microsoft.com/en-us/library/aa292118%28v=vs.71%29.aspx

Това означава, че всичко, което се изпълнява, се извършва като потребител. Това обаче може да причини проблеми в определени сценарии. Това означава, че сайтът работи с идентификационните данни на потребителя за тази сесия, а не с идентичността на набора от приложения, и ще трябва да прескачате през обръчите, за да настроите уеб приложението да функционира правилно и все пак да бъде защитено.

Трябва да имате предвид, че всичко, което стартирате, ще поеме идентификационните данни на набора от приложения при повечето нормални конфигурации. Можете да промените акаунта за набора от приложения. Това може да ви позволи да държите нещата заключени, като разрешите достъп само от потребителя, който изпълнява набора от приложения.

Други алтернативи може да са да имате друго приложение освен основното приложение, което използва имитация. Това може да е по-лесно за управление, отколкото да преобразувате цялото си приложение да използва имитация. (Нямам подробности за вашия проект, така че е трудно да направя конкретна препоръка тук.)

person Community    schedule 14.06.2011
comment
Това не прави точно това, от което се нуждая, но не е различно от подхода, който използвам в моя прототип в момента. По същество имам фиктивен акаунт в Windows, който използвам за целите на удостоверяването. Така че съхранявам кредитите на акаунта в криптирана форма в web.config и ги използвам, когато извиквам wkhtmltopdf. Не е великолепно, но изглежда работи и може да го използвам... - person John Reilly; 15.06.2011