Cómo usar OAuth con Active Directory

6

Estoy creando un servicio REST WCF y quiero usar OAuth para autenticar la solicitud de cada usuario. Las cuentas de usuario se almacenan en Active Directory, por lo que tengo acceso a su nombre de inicio de sesión de AD en la aplicación cliente y puedo pasar esa información junto con el encabezado de la solicitud.

He usado Auth con la API REST de FatSecret antes, así que estoy familiarizado con cómo funciona la autenticación.

Básicamente, no estoy seguro de cómo manejar la asignación y el almacenamiento de claves secretas para los usuarios y cómo vincular la clave secreta de un usuario con su nombre de inicio de sesión de AD.

¿Tendré otra base de datos que contenga una tabla de asignación de nombres de inicio de sesión de usuario AD a claves secretas y luego buscaré la clave secreta en esa tabla cuando llegue la solicitud?

¿Cómo me aseguro de que la solicitud entrante provenga realmente del usuario cuyo nombre de inicio de sesión esté en la solicitud entrante? nadie podría abrir Fiddler y crear una solicitud con el nombre de inicio de sesión AD de otro usuario ?

    
pregunta KodeKreachor 25.03.2012 - 06:20
fuente

2 respuestas

4

No estoy seguro de lo que OAuth te da que no se puede lograr usando otros medios. WCF + Rest funciona muy bien con la autenticación basada en notificaciones incluida en WIF.

Dado que WCF implica que estás usando ASP.NET, te recomiendo usar Windows Identity Foundation (WIF) en el lado del servidor. Echa un vistazo a este libro electrónico para más información.

A continuación, necesita una forma de exponer AD a su aplicación. Puede usar ADFSv2 , que es gratuito en Windows 2008 R2. Eche un vistazo a la instalación de SQL que protege de los ataques de reproducción de sesión.

Copiar y pegar las credenciales de Fiddler no es algo que pueda detener por completo. HTTPS ayuda, pero si realmente desea investigar este problema, consulte esta P y A en A Stackoverflow .

    
respondido por el random65537 27.03.2012 - 01:11
fuente
1

OAuth puede ser una excelente opción si está soportando aplicaciones móviles. De esta manera, la aplicación móvil puede almacenar un token de acceso sin necesidad de llevar consigo la contraseña del usuario en el dispositivo. El escenario básico es que la aplicación solicita el token de una puerta de enlace que solicita a los usuarios las credenciales (usuario / pw) y luego las valida contra el AD. Una vez que se valida AD, la puerta de enlace emite el token de acceso (posiblemente a través del intercambio de códigos de acceso) a la aplicación. La aplicación utiliza el token para solicitar servicios. La aplicación que proporciona los servicios puede verificar con la puerta de enlace para verificar el token Y obtener la asignación del token de acceso al nombre de usuario. De esta manera, la puerta de enlace contiene las asignaciones, pero solo durante el tiempo que el token de acceso sea válido.

    
respondido por el Oleg 27.03.2013 - 19:48
fuente

Lea otras preguntas en las etiquetas