Recientemente creé un sitio web MVC 5 como un prototipo de front-end y usé cuentas individuales para la autenticación. Ahora necesito crear un backend de WebApi2 que sirva a este sitio web, así como a una aplicación para iPhone y a muchos otros clientes. Estoy confundido con respecto a la autenticación con el sitio MVC y WebApi.
Quiero que toda la administración de usuarios se realice a través de WebApi (que usará tokens) para que sea independiente del cliente; sin embargo, no sé cómo funcionará la autenticación de cookies en el sitio web sin mis clases de identidad. Parece que duplicaré el código con el sitio MVC y WebApi. Quiero usar cookies para el sitio mvc y tokens de autenticación para webapi. ¿Necesito crear otro proyecto como IdentityProvider para administrar esto? ¿O hay una forma limpia de implementar esto usando solo los proyectos MVC y WebApi? ¡Gracias!
EDITAR: principalmente estoy confundido acerca de cómo administrar la identidad del usuario con los usuarios que pueden iniciar sesión a través del sitio MVC y mediante una solicitud WebApi. Necesito poder generar UserIdentity y reclamos de manera unificada y estoy confundido cuando tengo tanto la plantilla de cuentas individuales de MVC como la plantilla de autenticación de cuentas individuales de WebApi2 para trabajar. Quiero almacenar usuarios, reclamos, etc. en una instancia de MongoDB alojada en AWS.
Ambas plantillas (mvc y api) usan SigninManager y UserManager. La implementación estándar del administrador de usuarios se basa en SQL Server y Entity Framework.
Si desea mantener los datos de los usuarios en MongoDB, la mejor solución es crear su propio UserStore para implementar al menos las interfaces IUserStore e IUserRoleStore, o usar este paquete nuget
Para el UserManager puede usar la implementación estándar.
La identidad de Asp.net que está utilizando es de código abierto y puede echar un vistazo en codeplex (el de github es para mvc 6).
Creo que la mejor manera de manejar su escenario es:
¡Espero que esto ayude!
Piense en el proveedor de membresía como separado e independiente de la tecnología utilizada para desarrollar la aplicación. La autenticación es autenticación que no depende de una tecnología en particular.
http://www.asp.net/identity/overview/getting-started/aspnet-identity-recommended-resources