Domanda

La mia azienda ha un'applicazione di grandi dimensioni che stiamo completando. Utilizza WCF come back-bone con Active Directory per l'autenticazione. Questo funziona perfettamente per uno dei due siti in quanto il modello di autenticazione è Windows e devi essere parte del dominio per accedere al sito. La domanda che ho riguarda l'altro sito accessibile dall'esterno. Imposta ClientCredentials.Windows.ClientCredential per la chiamata proxy con un utente / pass specifico per la rappresentazione di un utente AD in modo che funzioni il modello di sicurezza completo. Tutto funziona esattamente come previsto.

La domanda che ho è, sul web posso usare HttpContext.Current.User.Identity.Name per ottenere l'utente attualmente connesso dal pezzo di autenticazione Forms, ma per fare questo devo assicurarmi un System.Web esiste un riferimento alla DLL in cui sto attualmente lavorando. I nostri oggetti di base provengono da una classe semplicistica che non conosce System.Web. C'è un modo per scoprire l'utente Forms che ha effettuato l'accesso all'interno di quel progetto oggetto base? Ho provato System.Security.Principal ma questo mi dà accesso agli account Windows solo da quello che potrei dire e non mi farà nulla di buono.

So che un'opzione è solo fare riferimento a System.Web e farla finita, ma suona davvero klugy per me e non l'opzione migliore, quindi spero in alcuni suggerimenti qui.

È stato utile?

Soluzione

Thread.CurrentPrincipal.Identity farà esattamente la stessa cosa di HttpContext.CurrentContext...

Restituirà l'identità associata al thread di esecuzione corrente, che nella maggior parte dei casi è l'utente che ha effettuato l'accesso *.

Nota: * Se si utilizza la delega / rappresentazione o si esegue come account di servizio, verrà restituito l'account di qualsiasi identità in cui si trova il thread, ma nel tuo caso, non sembra che tu stia facendo alcun contesto cambio di identità.

Altri suggerimenti

Se il nome utente come stringa è sufficiente per te,

Environment.UserName
// Environment.UserDomainName and MachineName can also be useful

Da MSDN :

  

Ottiene il nome utente della persona che ha avviato il thread corrente.

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