es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Prevención del acceso de un grupo de usuarios a los demás clientes en IdentityServer.

Estoy desarrollando una aplicación ASP.Net Core con el patrón Backend For Frontend usando Ocelot. Por ahora habrá un solo servicio de API, pero en el futuro podría migrar a microservicios. Digamos que será un sistema de comercio electrónico donde crearé diferentes aplicaciones web para clientes y empleados. También puedo tener una aplicación móvil para clientes.

De mi investigación, sé que debo tener mi API principal, luego dos puertas de enlace de API y dos aplicaciones de cliente (angular). También se necesita una aplicación separada de IdentityServer.

Así que mi pregunta es: ¿hay alguna manera de configurar IdentityServer y las puertas de enlace de tal manera que cuando inicie sesión en la aplicación para empleados, no esté autenticado en la aplicación para clientes? No puedo entender si debería ser posible con la configuración correcta de alcances, reclamos o audiencias. Vi muchos ejemplos donde esas propiedades se configuraron completamente diferentes. Puedo evitar que el usuario acceda a algunos puntos finales con el uso de Roles, pero creo que no es la forma correcta de hacer esto.

¿O tal vez, dado que IdentityServer tiene SSO incorporado, no debería usarlo y utilizar un proveedor de autenticación diferente?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en asp.net-core, asp.net-web-api, identityserver4 y ocelot, puedo sugerir el siguiente enfoque para el problema de configurar IdentityServer y gateways para lograr una autenticación separada para diferentes aplicaciones web.

    En primer lugar, es importante entender que IdentityServer está diseñado para Single Sign-On (SSO) y está destinado a autenticar a un usuario en múltiples aplicaciones. Por lo tanto, si desea tener una autenticación separada para diferentes aplicaciones web para clientes y empleados, el uso de IdentityServer puede no ser la mejor opción.

    En su lugar, puede explorar otros proveedores de autenticación que permitan una autenticación separada para diferentes aplicaciones. Por ejemplo, Azure Active Directory (Azure AD) le permite crear aplicaciones separadas para diferentes grupos de usuarios y configurar políticas de autenticación y autorización separadas para cada aplicación.

    Sin embargo, si desea mantenerse con IdentityServer, puede lograr una autenticación separada configurando diferentes ámbitos, reclamaciones o audiencias para cada aplicación. Puede crear un ámbito o audiencia separados para cada aplicación y especificar los clientes permitidos para ese ámbito o audiencia. También puede agregar diferentes reclamaciones para cada usuario según su rol o aplicación. De esta manera, cuando un usuario inicia sesión en una aplicación, solo será autenticado para esa aplicación y no para otras aplicaciones.

    En cuanto a los gateways, puede configurarlos para permitir el acceso solo a rutas específicas basadas en las reclamaciones autenticadas del usuario. De esta manera, incluso si un usuario está autenticado para varias aplicaciones, solo podrá acceder a las rutas que son relevantes para su aplicación actual.

    En conclusión, aunque IdentityServer está diseñado para SSO, aún es posible lograr una autenticación separada para diferentes aplicaciones mediante la configuración de diferentes ámbitos, reclamaciones o audiencias. Sin embargo, si desea una solución más simple, puede explorar otros proveedores de autenticación que permitan una autenticación separada para diferentes aplicaciones.

Comments are closed.