Hola chicos, estamos construyendo una aplicación ASP.NET MCV 3 desde cero ejecutándose en Windows Azure. Acerca de la capa Autenticación y Autorización, estamos pensando en utilizar el Servicio de control de acceso. Revisé algunos artículos sobre ACS donde obtuve la idea básica, pero todavía tengo algunas dudas al respecto.Azure ACS - Implementación de mejores prácticas
Según entiendo, al utilizar el ACS subcontratamos el proceso de Autenticación a uno o más Proveedores de Identidades (IP), básicamente confiamos en otro sistema (es decir, Microsoft Live ID) para autenticar a nuestros usuarios. El proceso básico es muy sencillo: en la etapa de autenticación, redirigimos (ACS lo hace) al usuario a una de nuestras direcciones IP "confiables", que redirigirá al usuario (con un token válido) al ACS y finalmente a nuestra aplicación. Aquí viene una serie de preguntas ...
Como no queremos que todos los usuarios con una cuenta de Live ID puedan acceder a nuestra aplicación, supongo que debe haber otro proceso para validar a ese usuario y verificar si está registrado en nuestra aplicación. La pregunta es ¿dónde? En el ACS o en nuestra aplicación.?
Tengo una idea sobre esto, pero no sé si es la manera correcta de hacerlo: En la etapa de registro, el sistema (nuestra aplicación web) pregunta al usuario qué IP (es decir, Live ID, Google, Facebook y nuestra aplicación.) Que quiere usar para autenticarse en la aplicación. Luego, el usuario pasa por el proceso de autenticación en el sistema IP y cuando regresa, almacenamos su nombre de usuario (nombre de usuario IP) en nuestro DB. Entonces, la próxima vez, en la etapa de autenticación podemos verificar si ese usuario está registrado en nuestro sistema.
Si la teoría anterior es correcta, eso significa en nuestra aplicación. necesitamos construir nuestro proveedor de membresía para almacenar los nombres de usuario que provienen de IP y los usuarios que eligen nuestra aplicación. Un sorbo. ¿Estoy en lo correcto? ¿Cuál es la mejor práctica para diseñar el proceso anterior?
Ahora hablemos de Autorización y "Roles". ¿Cómo funciona con ACS? ¿ACS administra múltiples roles por usuario?
De nuevo, tengo entendido que con ACS puede crear una cantidad de "Grupos de reglas" relacionados con la IP y no con un solo usuario. Si esto es correcto, ¿cómo gestionamos a los usuarios en función en nuestra aplicación? Digamos, por ejemplo, que tenemos múltiples roles y que nuestros usuarios pueden estar asociados a esos roles, ¿podemos usar ASC para administrarlo?
Las preguntas finales son: ¿ACS cubre el proceso completo de Autenticación y Autorización? ¿Todavía necesitamos usar el Proveedor de Membresía .net? ¿Cuál es la mejor práctica para cubrir nuestros requisitos?
Muchas gracias por su contribución.
Andrew muchas gracias por su respuesta. Entonces, sobre los roles en ACS era correcto, básicamente no podemos asociar un usuario a un rol, como lo podemos hacer en el proveedor de membresía .net (UsersInRoles), pero podemos asociar un rol basado en el IP. ¿Qué tal en la etapa de registro? ¿Qué debemos almacenar en nuestra base de datos para reconocer a un usuario (como parte de nuestros clientes) en la etapa de autenticación? – Francesco
No, lo que estoy diciendo es que ** puede ** asociar usuarios a roles usando ACS. He ampliado mi respuesta anterior para cubrir esto. –