Problea con usuario conectado

02/03/2007 - 23:46 por Marcelo Cardozo | Informe spam
Tengo el siguiente codigo:

[assembly:SecurityPermission(SecurityAction.RequestMinimum,
ControlPrincipal=true)]

namespace PruebaIdentity
{
public class Identificacion : ServicedComponent , _iLoginCli
{
public Identificacion()
{}

public string UsuarioConectado()
{

string UserLogued;
string strReturn;
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal user =
(WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
UserLogued = user.Identity.Name;
strReturn = UserLogued.Substring(UserLogued.IndexOf(@"\") + 1 );
return strReturn ;
}

el cual retorna el usuario logueado como un string, ahora bien, este metodo
lo tengo dentro de una DLL que subo al com+, PERO que se usa en una sesion de
terminal server. El problema es que al estar en el com+ ( se consume desde
VB6 ) me retorna el usuario logueado al server ( o sea el administrador ) y
no el usuario logueado a la terminal. Hay alguna forma de solucionar esto,
para que lo que devuelva sea el usuario logueado a la terminal. Si lo uso
localmente en la terminal como un metodo en una clase lo hace perfectamente,
el tema es cuando lo subo al Com+ que no me reconoce el usuario local.
Desde ya muchas gracias.

Marcelo Cardozo
 

Leer las respuestas

#1 Alberto Poblacion
03/03/2007 - 00:24 | Informe spam
"Marcelo Cardozo" <Marcelo wrote in
message news:
El problema es que al estar en el com+ ( se consume desde
VB6 ) me retorna el usuario logueado al server ( o sea el administrador )
y
no el usuario logueado a la terminal. Hay alguna forma de solucionar
esto,
para que lo que devuelva sea el usuario logueado a la terminal. Si lo uso
localmente en la terminal como un metodo en una clase lo hace
perfectamente,
el tema es cuando lo subo al Com+ que no me reconoce el usuario local.
Desde ya muchas gracias.



¿Tienes la aplicación COM+ configurada con el ActivationOption tipo
Server o tipo Library? Si está como Library, te debería devolver el usuario
del EXE que la llama, pero si está como Server, el usuario se configura en
el catálogo de COM+. Las alternativas son dos: O se pone un usuario fijo, en
cuyo caso el Identity.Name te deberia devolver ese usuario, o se selecciona
la opción "Interactive User", cosa que solo se recomienda para hacer pruebas
mientras la aplicación está en desarrollo, pero nunca para ponerla en
producción, ya que en este caso te devuelve el usuario logueado en consola,
que puede ser cualquiera y no tener nada que ver con la aplicación. Me temo
que así es como tienes configurado tu componente, dados los síntomas que has
indicado.

Si necesitas dejar la aplicación en modo Server y necesitas saber
realmente el usuario llamante, lo puedes hacer mediante la clase
SecurityCallContext, que tiene una propiedad llamada OriginalCaller que te
devuelve el usuario que ha hecho la llamada al componente.

Preguntas similares