Domanda

Ho il compito di generare un PDF da una pagina HTML su un sito Web ASP.NET. (Qualcosa che gli utenti possono salvare/stampare bene)

Ho scoperto che Wkhtmltopdf fa molto bene il lavoro dopo averlo guardato:

Chiamare Wkhtmltopdf per generare PDF da HTML

Tuttavia, ho un problema. Il nostro sito Web è un sito Intranet e utilizza l'autenticazione di Windows. Posso passare le mie credenziali a Wkhtmltopdf usando -Username e - -Password e dimostrare a me stesso che la pagina web è generata come speresti.

Il problema è questo: cosa fare per ogni utente diverso che entra nel nostro sistema? Posso pensare a una serie di possibili soluzioni che potrebbero non funzionare e speravo che qualcuno potesse darmi alcune opinioni / guida poiché mi sembra di essere arrivato alla fine delle mie ricerche.

Possibili soluzioni:

  1. Esiste un modo in ASP.NET che posso estrarre nome utente e password dalle credenziali degli utenti per passare in wkhtmltopdf? Sospetto che la risposta a questo sia "no e per motivi sensati"
  2. È possibile eseguire il processo e passare attraverso le credenziali degli utenti? Vedo che è possibile impostare il nome utente / password sul processo (anche se non so come lo passerei dalle credenziali poiché la password sembra non essere esposta). Forse esiste un altro metodo per passare direttamente alle credenziali per il processo?
  3. Potrei creare un sito Web PDFGenerator separato che non utilizza l'autenticazione Windows. Potrei quindi esprimere l'HTML/CSS/Immagini dal sito Web protetto a una directory condivisa e quindi reindirizzare gli utenti al sito Web PDFGenerator per generare effettivamente il PDF dall'HTML senza doversi preoccuparsi dell'autenticazione (e pulirebbe HTML ecc. Dopo PDF generato).

Sospetto che 3 sia la soluzione che finirò per perseguire, ma dato che è essenzialmente una grande soluzione per affrontare il problema dell'autenticazione, sono molto aperto a suggerimenti migliori o aiuto su 1 o 2!

È stato utile?

Soluzione

È possibile impostare l'impersone in web.config:

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

Ciò significa che tutto ciò che viene eseguito viene fatto come utente. Ciò può causare problemi anche se in alcuni scenari. Ciò significa che il sito è in esecuzione con le credenziali dell'utente per quella sessione piuttosto che l'identità del pool di app e dovrai saltare attraverso i cerchi per impostare l'app Web per funzionare correttamente ed essere comunque sicuro.

Dovresti notare che tutto ciò che esegui assumerà le credenziali del pool di app sotto la maggior parte delle normali configurazioni. Puoi modificare l'account per il pool di app. Ciò potrebbe consentire di mantenere le cose bloccate consentendo l'accesso solo dall'utente che esegue il pool di app.

Altre alternative potrebbero essere quella di avere un'altra app a parte l'app principale che utilizza la rappresentazione. Questo potrebbe essere più facile da gestire che convertire l'intera app per utilizzare la rappresentazione. (Non ho i dettagli del tuo progetto, quindi è difficile formulare una raccomandazione concreta qui.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top