2009-09-30 25 views
9

Quiero poder iniciar sesión de forma segura en un sistema sin tener que escribir la contraseña de usuario desde una PC con Windows en el directorio activo. La idea es que yo (el software del cliente, ejecutándose en una máquina con Windows conectada) tenga algún tipo de token que demuestre al servidor que soy quien digo que soy (el servidor habla con AD para verificar el token y mi identidad). identidad). ¿Es esto posible con .net 3?¿Puedo usar autenticación basada en token con Active Directory?

Idioma en uso en C#.

+0

Haga que la aplicación se haga pasar por un Principal de dominio creado para tal fin. –

+0

¿Busca específicamente una respuesta de programación, ya que el paquete Kerberos puede configurarse específicamente para permitir este tipo de comportamiento? –

Respuesta

0

Si accede a cualquier recurso de red (archivos compartidos, servidores SQL, etc.), la aplicación los realizará automáticamente como el usuario que actualmente lo está ejecutando. ¿Quieres hacer algo más específico? Si está operando en un dominio, los permisos deben seguirlo naturalmente a cualquier recurso de red que utilice.

Puede usar .NET para hacerse pasar por otros usuarios y realizar tareas como ellos, pero sin tomar pasos adicionales, actuará en nombre del usuario sin tener que volver a iniciar sesión.

0

en las máquinas de Windows cada subproceso de aplicación se ejecuta con algún token de seguridad, por defecto este es el token del usuario actual, por lo que si quiere leer un archivo en la máquina o red su aplicación irá allí con su token, puede ejecutar aplicaciones como otro usuario o servicio o puede suplantar su código para actuar como otra persona. si lo está usando como una aplicación asp.net, Internet Explorer intercambiará datos en segundo plano con iis (en su área de intranet) para que el servidor sepa quién es usted, pero de manera predeterminada no se ejecutará con sus credenciales, esto puede ser cambiado a través de web.config

3

Si he entendido la pregunta correctamente, parece que Kerberos podría ser exactamente lo que está buscando en esta instancia. La Autenticación de Kerberos (si es compatible con su entorno de destino) permitiría esta forma de autenticación con boleto. Para una visión general de cómo autenticación intermediadas con Kerberos funciona recomendaría la referencia de MSDN en Brokered Authentication with Kerberos:

Brokered authentication with Kerberos http://i.msdn.microsoft.com/Aa480562.ch1_brokauthkerb_f02(en-us,MSDN.10).gif

En cuanto al código C# apoyar esto, yo recomendaría este CodeProject article que es se centra en MS Web Servicios pero podría proporcionar la base para usarlo en otros escenarios.

10

Creo que realmente debería considerar la autenticación basada en reclamos.

Microsoft ha hecho mucho recientemente. Probablemente haya oído hablar de Geneva Server (oficialmente llamado ADFS 2.0 ahora) y Geneva Framework (ahora llamado Windows Identity Foundation). La idea es que la autenticación se realice en un punto/servidor central (el Servidor Geneva o un Servidor de Token de Seguridad (STS) en general), el usuario autenticado recibe un token de seguridad (basado en SAML 2.0) que presenta al recurso él/ella quiere acceder La autenticación se puede realizar de varias maneras, incluyendo nombre de usuario/contraseña, tarjeta inteligente, certificados o, en su caso, traduciendo un token ya presente como la autenticación de Windows (llamada Autenticación integrada de Windows).

El token está basado en SAML 2.0 (estándar de la industria que es importante para una buena interoperabilidad con los productos STS de otros proveedores). Contiene afirmaciones sobre una persona que se utilizan en una aplicación o recurso (que también incluye servicios web) para hacer la autorización (concesión de derechos). A tal fin, es esencial, por supuesto, que la aplicación confíe en los reclamos dados por el STS. Por otro lado, la aplicación no necesita hacer ninguna autenticación en absoluto.

Geneva Framework es una biblioteca (.NET) utilizada para procesar tokens en una aplicación. Es bastante simple de usar.

Para más información, eche un vistazo a los libros blancos que dan una buena introducción a este tema. El sitio oficial es here.

Por supuesto, hay muchos más problemas que se abordan con estos conceptos que realmente es la parte interesante en mi humilde opinión. Esto incluye inicio de sesión único (SSO), inicio de sesión único federado (a través de múltiples límites de la organización), delegación (una aplicación utiliza un servicio web con sus derechos de usuario). Espero que esta información ayude!

Saludos

PS: Por supuesto que esto no es en absoluto un problema de Microsoft. Existen otros productos de STS como Sun OpenSSO, Ping Identity y Thinktecture Identity Server que proporcionan una funcionalidad similar. Acabo de resaltar las cosas de Microsoft porque es una buena interoperabilidad con AD y la autenticación de Windows mencionada en la pregunta.

+0

Los documentos técnicos mencionados son: http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/Introducing_Geneva_Beta1_Whitepaper.pdf y http://download.microsoft .com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/GenevaFramework-WhitepaperForDevelopers-Beta2.pdf – Macross

Cuestiones relacionadas