Question

Mon entreprise est en train de terminer une grande application. Il utilise WCF comme élément central d’Active Directory pour l’authentification. Cela fonctionne parfaitement pour l'un des deux sites, car le modèle d'authentification est Windows et vous devez faire partie du domaine pour vous connecter au site. La question que j'ai concerne l'autre site qui est accessible de l'extérieur. Il définit ClientCredentials.Windows.ClientCredential pour l'appel de proxy avec un utilisateur / un passe spécifique pour l'emprunt d'identité d'un utilisateur AD afin que le modèle de sécurité complet fonctionne. Tout cela fonctionne exactement comme prévu.

Ma question est la suivante: sur le Web, je peux utiliser HttpContext.Current.User.Identity.Name pour obtenir l'utilisateur actuellement connecté à partir de la pièce d'authentification Forms, mais pour ce faire, je dois m'assurer qu'un System.Web référence existe par rapport à la DLL sur laquelle je travaille actuellement. Nos objets de base proviennent d'une classe simpliste qui ne connaît pas System.Web. Existe-t-il un moyen de connaître l'utilisateur de formulaires connecté à l'intérieur de ce projet d'objet de base? J'ai essayé System.Security.Principal, mais cela ne me donne accès aux comptes Windows que d'après ce que je savais et ne me ferait aucun bien.

Je sais qu’une option consiste à faire référence à System.Web et à en finir avec cela, mais cela me semble vraiment incroyable et ce n’est pas la meilleure option, j’espère avoir quelques conseils ici.

Était-ce utile?

La solution

Thread.CurrentPrincipal.Identity fera exactement la même chose que HttpContext.CurrentContext ...

Cela retournera l'identité associée au thread en cours d'exécution, qui est dans la plupart des cas l'utilisateur connecté *.

Remarque: * Si vous utilisez une délégation / usurpation d'identité ou si vous utilisez un compte de service, le compte indiquant l'identité du thread sous-jacent sera renvoyé, mais dans votre cas, il ne semble pas que vous utilisiez un contexte. changement d'identité.

Autres conseils

Si le nom d'utilisateur sous forme de chaîne vous suffit,

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

De MSDN :

  

Obtient le nom d'utilisateur de la personne qui a démarré le fil de discussion actuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top