[altnet-argentina] Authenticacion Mixta

8 views
Skip to first unread message

Matias Thacker

unread,
Jun 14, 2012, 6:43:25 PM6/14/12
to altnet-a...@googlegroups.com, altnet-...@googlegroups.com
Hola! estoy trabajando en un proyecto donde necesitamos hacer lo siguiente:

"El usuario debe poder acceder al sitio web utilizando windows-integrated authentication, sin ser preguntado por credenciales, si el usuario no esta dentro del dominio debe ser redirigido a una pagina de login y usar FormsAuthentication".

La idea es que esto suceda sin que al usuario se le pregunte si tiene credenciales de windows, osea: entro, si estoy dentro del dominio uso windows auth de forma transparente, si estoy fuera soy redirigido a una pagina de login donde ahi entrará sus credenciales. La redireccion debe ser de forma transparente tambien (es decir sin que el browser le pregunte al usuario por las credenciales de windows).

Aclaro esto porque por el momento logré hacer andar que el usuario entre tratando de usar windows auth, el browser pide por credenciales, si el usuario las ingresa entra con Windows Auth, pero si le  da "cancel" lo redirijo a la pagina de login y usa forms.

Creen que esto es posible?

Gracias!

Matias Woloski

unread,
Jun 14, 2012, 7:04:54 PM6/14/12
to altnet-a...@googlegroups.com, altnet-...@googlegroups.com
Detectar si "funciona Windows Auth" como bien decis no se puede. Por lo tanto, los trucos que conozco yo para hacer esto se resuelven con IP o DNS. 

  • IP: tenes una pagina inicial que dependiendo de la IP del cliente (generalmente conoces el rango de IPs de la red interna) lo mandas a un Virtual Dir (con windows auth) o a otro (con anonymous) dependiendo de esos valores. Por supuesto la fragilidad de esto es que si cambian el rango (esto puede pasar cuando se reestructura la red) se rompe tu sistema

  • DNS: si tenes una infrastructura donde hay DNS para los clientes conectados a la network (esto es comun en una empresa que tiene su propio DNS) podes hacer que el DNS interno resuelva a una IP que esta mapeada a un sitio web "interno" configurado con Windows Auth y el DNS externo apunte a una IP que este mapeada al sitio "externo" configurado con Anoynmoys y Form. La desventaja es que necesitas dos IPs mapeadas a un server (o dos servers)
Tene en cuenta que una vez autenticado el usuario tenes que tener algun sistema de principal generico para Windows y Forms (no podes usar WindowsPrincipal ni FormsPrincipal). Te recomiendo tambien que leas sobre federated claims-based identity (http://msdn.microsoft.com/en-us/library/ff423674.aspx) que es un approach basado en tokens.

Matias
the identity glue: http://auth10.com



2012/6/14 Matias Thacker <matias....@gmail.com>

Diego Mijelshon

unread,
Jun 14, 2012, 8:01:46 PM6/14/12
to altnet-a...@googlegroups.com
El problema es que el browser en general no va a mandar las credenciales si el server no las pide.
Lo más cercano que se me ocurre es fijarte por IP si el usuario está en la LAN (o logueado a la VPN, o lo que corchos se te ocurra) y sólo en ese caso pedir las credenciales por http.

2012/6/14 Matias Thacker <matias....@gmail.com>

Gustavo Azcona

unread,
Jun 15, 2012, 9:05:54 AM6/15/12
to altnet-a...@googlegroups.com

Apoyo la recomendación de Mawolo usando Federated Identity.

 

Estoy asumiendo que los usuarios serán autenticados contra Active Directory.

Entonces podrías instalar y configurar ADFS (Active Directory Federation Services) y hacer que tu aplicación maneje claims usando WIF (Windows Identity Foundation).

 

Los usuarios logeados al dominio podrán ingresaran al sitio web sin ingresar credenciales (porque ya están logueados) esto se conoce como SSO (Single Sign On).

Los usuarios remotos o que no están logueados al dominio serán redirigidos a una página de login proporcionada por ADFS, ingresarán sus credenciales de Active Directory, se validarán contra AD y serán redirigidos al sitio web.

 

Este approach es mucho más robusto, seguro y confiable.

En los siguientes links encontrarás muchos recursos sobre este tema. Matías Woloski (Mawolo) viene trabajando hace tiempo con esto y es co-autor de unos de los e-books publicados por Microsoft.

 

Claims Based Identity & Access Control Guide

http://claimsid.codeplex.com/

 

A Guide to Claims-Based Identity and Access Control, Second Edition - Book Download

http://www.microsoft.com/en-us/download/details.aspx?id=28362

 

 

Al principio puede que te parezca demasiado. Yo estuve con un escenario similar y no tenía idea de ADFS, WIF, Federated Identity, STS, etc. y luego de dedicarle un par de semanas a leer y hacer algunas pruebas de concepto, entendí y me convencí plenamente. Ahora lo estamos implementando para un cliente.

 

Espero sea útil.

~Gus

Reply all
Reply to author
Forward
0 new messages