Autenticación con el canal IPC
Este tema es específico de una tecnología heredada que se mantiene para la compatibilidad con versiones anteriores con aplicaciones existentes y no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas se deberían desarrollar utilizando Windows Communication Foundation (WCF).
El canal IPC admite directamente autenticación y suplantación. En este tema se describe cómo configurar los canales de servidor y de cliente.
.NET Framework permite a los servidores de objetos remotos autenticar y suplantar a los llamadores estableciendo las propiedades de los IpcServerChannel asociados y los objetos IpcClientChannel. A diferencia de los canales TCP y http, el canal IPC realiza la autenticación de forma predeterminada. Cuando se crea un IpcServerChannel, se crea una Lista de control de acceso (ACL) para el canal. De forma predeterminada, la ACL solo contiene las credenciales con las que se está ejecutando la aplicación de servidor. Para comunicarse con el canal, el cliente (y por consiguiente el IpcClientChannel) se deben ejecutar siguiendo las mismas credenciales. No obstante, usted podrá especificar un usuario de Windows o grupo de usuarios en la configuración del canal de servidor de IPC que permite tener acceso al canal a ese usuario o grupo de usuarios.
Configuración del servidor
Si desea que el canal IPC sea accesible a usuarios distintos del usuario bajo cuya identidad se está ejecutando la aplicación de servidor, puede especificar un usuario o grupo de usuarios en la propiedad authorizedGroup. El siguiente archivo de configuración permite a todos los usuarios del grupo Users
acceder al canal IPC.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" />
</service>
<channels>
<channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
El canal IPC también admite la suplantación. Esto se controla en el servidor por la propiedad impersonate. La siguiente configuración activa la suplantación.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="Microsoft.Samples.Implementation.ImplementationClass, Server" objectUri="server.rem" />
</service>
<channels>
<channel ref="ipc" portName="MyIpcChannel" secure="true" impersonate="true" authorizedGroup="Users"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
Nota: |
---|
Aún así, al utilizar la autenticación del canal IPC debe establecer la propiedad secure a true al establecer la propiedad impersonate a true. |
Nota: |
---|
Todos los procesos se ejecutan desde una cuenta de usuario estándar en Windows Vista. Los usuarios estándar no pueden suplantar una cuenta de administrador. Si tiene una aplicación remota que debe suplantar a una cuenta de administrador, esa aplicación se debe ejecutar con privilegios elevados. |
Se puede tener acceso a la identidad del cliente autenticado obteniendo CurrentPrincipaly, a continuación, accediendo a su propiedad Identity. Se puede tener acceso a la identidad del cliente suplantado mediante GetCurrent. A continuación, puede llevar a cabo su propia autorización, si se requiere.
El canal IPC utiliza siempre la autenticación NTLM. No se admite Kerberos porque el protocolo IPC está restringido a llamadas dentro de un único equipo.
Configuración del cliente
Para configurar un canal IPC de cliente con el fin de utilizar la suplantación, establezca la propiedad tokenImpersonationLevel en impersonation
tal como se muestra en el siguiente archivo de configuración.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<channels>
<channel ref="ipc" secure="true" tokenImpersonationLevel="impersonation" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
Nota: |
---|
Aún así, al utilizar la autenticación del canal IPC debe establecer la propiedad secure en true al establecer la propiedad tokenImpersonationLevel a “suplantación”. Para que la suplantación tenga lugar, la propiedad impersonate del canal de servidor se debe establecer a true. Observe que en el servidor la propiedad se denomina impersonate pero en el cliente, usted establece tokenImpersonationLevel a impersonation. |
Nota: |
---|
Todos los procesos se ejecutan desde una cuenta de usuario estándar en Windows Vista. Los usuarios estándar no pueden suplantar una cuenta de administrador. Si tiene una aplicación remota que debe suplantar a una cuenta de administrador, esa aplicación se debe ejecutar con privilegios elevados. |
El tokenImpersonationLevel se puede configurar a uno de los valores de la tabla siguiente.
Valor de tokenImpersonationLevel | Descripción |
---|---|
identificación |
El servidor puede obtener información sobre el cliente, como identificadores de seguridad y privilegios, pero no puede suplantarlo. |
suplantación |
El servidor puede suplantar el contexto de seguridad del cliente en su sistema local. El servidor no puede suplantar al cliente en sistemas remotos. |
delegación |
El servidor puede suplantar al cliente en sistemas remotos. |
Nota: |
---|
El canal IPC no le permite especificar un conjunto alternativo de credenciales mediante programación o a través de la configuración. Por consiguiente, el cliente siempre envía al servidor las credenciales con las que se está ejecutando. |
Nota: |
---|
El canal IPC solo utiliza NTLM para la autenticación. |
Vea también
Conceptos
Autenticación con el canal HTTP
Autenticación con el canal TCP
Cifrado e integridad de mensaje