J'ai une application Flex-WebORB-Asp.NET. Lorsque vous vous connectez, il y a une AuthenticationHandler qui implémente une interface WebORB:Asp.NET Principal WebORB HttpHandler
IPrincipal CheckCredentials(string username, string password, Request message);
donc je crée un principal et le retourner. WebORB utilise le principal pour vérifier l'authentification et l'autorisation des appels de méthode à distance.
var principal = new GenericPrincipal(new GenericIdentity(user.id.ToString()), new[] { "admin" });
return principal
maintenant, à ce moment, si je vérifie ce que HttpContext.Current.User.Identity
est, il est un WindowsIdentity.
Jusqu'ici tout va bien. Lorsque plus tard, un appel à distance se fait par WebORB, je reçois l'identifiant de l'utilisateur connecté en appelant:
Thread.CurrentPrincipal.Identity.Name
donc je suppose que WebORB assure l'identité du fil est réglé à chaque appel à distance.
Le problème est que lorsque j'appelle un HttpHandler (pour récupérer une image), j'essaie également d'obtenir l'ID de l'utilisateur connecté avec Thread.CurrentPrincipal.Identity.Name
, mais cela ne fonctionne pas. Probablement parce qu'avec un HttpHandler, WebORB n'intervient pas.
Comment voulez-vous résoudre ce problème afin que je puisse obtenir l'ID de l'utilisateur connecté de la même manière dans les deux cas? Mettez-le dans un objet de session? Pouvez-vous changer le HttpContext.Current.User.Identity
? Est-ce que le HttpContext.Current.User.Identity
ne devrait pas être le même que le Thread.CurrentPrincipal.Identity.Name
? Ps: Les utilisateurs ne sont pas dans Active Directory.
ps: Les utilisateurs ne sont pas dans Active Directory.