Cercare un piccolo consiglio (o forse anche una risposta diretta).Passare HttpContext.Current.User.Identity a WCF
Ho un sito Web MVC3. Ho anche un set di servizi WCF in esecuzione (per ora tutto è nella stessa scatola).
Che cosa sono provare tentare di autenticare il client (quella parte funziona correttamente), quindi passare tale utente autenticato su varie chiamate WCF.
Al momento ho collegato il metodo Application_AuthenticateRequest()
in Global.Asax
, che si riduce alla creazione di una nuova GenericIdentity & GenericPrincipal
, assegnando tale entità a HttpContext.Current.User
:
...
GenericIdentity identity = new GenericIdentity(userName);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
...
E quella parte sembra funzionare bene come bene.
Ma quando ho raggiunto il mio servizio, ho completamente perso l'utente che ho impostato. I valori sono vuoti o falsi.
L'unica cosa principale che ho notato è che sul lato client, l'oggetto HttpContext.Current.User.Identity
è di tipo {System.Web.Security.FormsIdentity}
, ma nel servizio è di tipo {System.Security.Principal.WindowsIdentity}
.
Basandomi su alcune delle cose che ho letto, sembra che modificare semplicemente il mio in modo che contenga aspNetCompatibilityEnabled="true"
potrebbe essere sufficiente per farlo funzionare correttamente. Ma non è quello che sto vedendo. Quindi o non sto capendo tutto (una possibilità molto buona) o ho qualcosa di rovinato (un'altra buona possibilità).
Quindi la mia domanda. E 'anche possibile, e se è così - pensieri su quello che mi manca? Ho notato che alcuni altri hanno pubblicato qualcosa di simile ma non hanno mai ricevuto una risposta definitiva (vedi here e here).
Qualsiasi suggerimento è molto apprezzato.
È strano che dite di vedere 'FormsIdentity' quando specificate specificamente' GenericIdentity' nel contesto utente corrente. Ti sei mixato? –