Compartir a través de


Introducción a la autenticación de ASP.NET Core

Por Mike Rousos

La autenticación es el proceso de determinar la identidad de un usuario. Authorization es el proceso de determinar si un usuario tiene acceso a un recurso. En ASP.NET Core, el servicio de autenticación controla la autenticación, IAuthenticationService, que usa la autenticación middleware. El servicio de autenticación usa controladores de autenticación registrados para completar las acciones relacionadas con la autenticación. Estos son algunos ejemplos de acciones relacionadas con la autenticación:

  • Autenticación de un usuario
  • Responder cuando un usuario no autenticado intenta acceder a un recurso restringido.

Los controladores de autenticación registrados y sus opciones de configuración se denominan "esquemas".

Para especificar esquemas de autenticación, es necesario registrar servicios de autenticación en :

  • Mediante una llamada a un método de extensión específico del esquema tras una llamada a , por ejemplo, o . Estos métodos de extensión usan para registrar esquemas con la configuración adecuada.
  • Con menos frecuencia, llamando a directamente.

Por ejemplo, el código siguiente registra los servicios de autenticación y los controladores para los esquemas de autenticación de portador de JWT y de :

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

El parámetro de es el nombre del esquema que se usará de forma predeterminada si no se solicita un esquema específico.

Si se usan varios esquemas, las directivas de autorización (o los atributos de autorización) pueden especificar el esquema (o esquemas) de autenticación del que dependen para autenticar al usuario. En el ejemplo anterior, se podría especificar el nombre del esquema de autenticación de ( de forma predeterminada, aunque se podría proporcionar otro nombre al llamar a ).

En algunos casos, la llamada a se realiza automáticamente mediante otros métodos de extensión. Por ejemplo, al usar ASP.NET Core Identity, se llama a AddAuthentication internamente.

El middleware de autenticación se añade en mediante la llamada a . La llamada a registra el middleware que usa los esquemas de autenticación previamente registrados. Llame a antes de cualquier middleware que dependa de que los usuarios estén autenticados.

Conceptos de autenticación

La autenticación es responsable de proporcionar el elemento para la autorización sobre el que tomar decisiones relativas a los permisos. Hay varios enfoques de esquema de autenticación para seleccionar el controlador de autenticación responsable de generar el conjunto correcto de reclamaciones:

  • Esquema de autenticación
  • El esquema de autenticación predeterminado, que se describe en las dos secciones siguientes.
  • Establezca directamente .

Cuando solo hay un único esquema de autenticación registrado, se convierte en el esquema predeterminado. Si se registran varios esquemas y no se especifica el esquema predeterminado, se debe especificar un esquema en el atributo authorize; de lo contrario, se produce el siguiente error:

Excepción de operación no válida: No se especificó un esquema de autenticación y no se encontró un esquema de autenticación predeterminado. Los esquemas predeterminados se pueden establecer mediante AddAuthentication(string defaultScheme) o AddAuthentication(ActionAuthenticationOptions configureOptions).

DefaultScheme

Cuando solo hay un único esquema de autenticación registrado, el esquema de autenticación único:

  • Se usa automáticamente como .
  • Elimina la necesidad de especificar en o .

Para deshabilitar automáticamente el uso del esquema de autenticación único como , llame a .

Esquema de autenticación

El esquema de autenticación puede seleccionar el controlador de autenticación encargado de generar el conjunto correcto de declaraciones. Para obtener más información, vea Autorizar con un esquema específico.

Un esquema de autenticación es un nombre que corresponde a:

  • Un controlador de autenticación.
  • Opciones para configurar esa instancia específica del controlador.

Los esquemas son útiles como mecanismo para hacer referencia a los comportamientos de autenticación, desafío y prohibición del controlador asociado. Por ejemplo, una directiva de autorización puede usar nombres de esquemas para especificar qué esquema (o esquemas) de autenticación conviene usar para autenticar al usuario. Al configurar la autenticación, es habitual especificar un esquema de autenticación predeterminado. A menos que un recurso solicite un esquema específico, se usará el predeterminado. También es posible:

  • Especificar distintos esquemas predeterminados que se usarán para las acciones de autenticación, desafío y prohibición.
  • Combinar varios esquemas en uno mediante esquemas de directiva.

Controlador de autenticación

Un controlador de autenticación:

  • Es un tipo que implementa el comportamiento de un esquema.
  • Se deriva de o .
  • Tiene la responsabilidad principal de autenticar a los usuarios.

Según la configuración del esquema de autenticación y el contexto de la solicitud entrante, los controladores de autenticación:

  • Si la autenticación se realiza correctamente, construya objetos que representen la identidad del usuario.
  • Devuelven "sin resultados" o "error" si la autenticación no es correcta.
  • Disponer de métodos para desafiar y restringir acciones cuando los usuarios intentan acceder a recursos.
    • No están autorizados a acceder (prohibido).
    • Cuando no están autenticados (desafío).

frente a

es la clase para la autenticación que requiere un paso de autenticación remota. Una vez finalizado el paso de autenticación remota, el controlador vuelve a llamar al establecido por el controlador. El controlador finaliza el paso de autenticación con la información que se pasa a la ruta de devolución de llamada . OAuth 2.0 y OIDC ambos usan este patrón. JWT y cookies no lo usan, ya que pueden usar directamente el encabezado de portador y para autenticarse. El proveedor hospedado de forma remota en este caso:

  • Es el proveedor de autenticación.
  • Algunos ejemplos son Facebook, Twitter, Google, Microsoft y cualquier otro proveedor de OIDC que controle la autenticación de los usuarios mediante el mecanismo de controladores.

Autenticar

La acción de autenticación de un esquema de autenticación es responsable de construir la identidad del usuario en función del contexto de solicitud. Devuelve un que indica si la autenticación se realizó correctamente y, si es así, la identidad del usuario en un vale de autenticación. Consulte . Ejemplos de autenticación:

  • Un esquema de autenticación que construye la identidad del usuario a partir de cookies.
  • Esquema de portador JWT que deserializa y valida un token de portador JWT para construir la identidad del usuario.

Desafío

La autorización invoca un desafío de autenticación si un usuario no autenticado solicita un punto de conexión que requiere autenticación. Se emite un desafío de autenticación si, por ejemplo, un usuario anónimo solicita un recurso restringido o sigue un vínculo de inicio de sesión. La autorización invoca un desafío mediante los esquemas de autenticación especificados o el valor predeterminado si no se especifica ninguno. Consulte . Ejemplos de desafío de autenticación:

  • Un esquema de autenticación de que redirige al usuario a una página de inicio de sesión.
  • Un esquema portador de JWT que devuelve un resultado 401 con un encabezado .

Una acción de desafío debe indicar al usuario qué mecanismo de autenticación usar para access el recurso solicitado.

Prohibición

La autorización llama a una acción de denegación de un esquema de autenticación cuando un usuario autenticado intenta acceder a un recurso al que no tiene permiso para acceder. Consulte . Ejemplos de prohibición de autenticación:

  • Esquema de autenticación cookie que redirige al usuario a una página que indica que el acceso estaba prohibido.
  • Un esquema portador JWT que devuelve un resultado 403.
  • Un esquema de autenticación personalizado que redirige a una página donde el usuario puede solicitar access al recurso.

Una acción de prohibición puede permitir que los usuarios sepan que:

  • Están autenticados.
  • No se les permite acceder al recurso solicitado.

Consulte los vínculos siguientes para conocer las diferencias entre desafío y prohibición:

  • Desafía y prohíbe con un gestor de recursos operativos
  • Diferencias entre desafío y prohibir

Proveedores de autenticación por inquilino

ASP.NET Core no tiene una solución integrada para la autenticación multiinquilino. Aunque es posible que los clientes escriban uno con las características integradas, se recomienda que los clientes consideren Orchard Core, ABP Framework o Finbuckle.MultiTenant para la autenticación multiinquilino.

Orchard Core es:

  • Un marco de aplicación de código abierto, modular y multiinquilino creado con ASP.NET Core.
  • Un sistema de administración de contenido (CMS) basado en el marco de la aplicación.

Consulte el origen Orchard Core para obtener un ejemplo de proveedores de autenticación por inquilino.

El Marco de ABP admite varios patrones arquitectónicos, como modularidad, microservicios, diseño dirigido por el dominio y multiarrendamiento. Vea el código fuente de ABP Framework en GitHub.

Finbuckle.MultiTenant:

  • código abierto
  • Proporciona resolución de inquilinos
  • Ligero
  • Proporciona aislamiento de datos
  • Configuración del comportamiento de la aplicación de forma única para cada inquilino

Recursos adicionales

Por Mike Rousos

La autenticación es el proceso de determinar la identidad de un usuario. Authorization es el proceso de determinar si un usuario tiene acceso a un recurso. En ASP.NET Core, el servicio de autenticación controla la autenticación, IAuthenticationService, que usa la autenticación middleware. El servicio de autenticación usa controladores de autenticación registrados para completar las acciones relacionadas con la autenticación. Estos son algunos ejemplos de acciones relacionadas con la autenticación:

  • Autenticación de un usuario
  • Responder cuando un usuario no autenticado intenta acceder a un recurso restringido.

Los controladores de autenticación registrados y sus opciones de configuración se denominan "esquemas".

Para especificar esquemas de autenticación, es necesario registrar servicios de autenticación en :

  • Mediante una llamada a un método de extensión específico del esquema tras una llamada a , por ejemplo, o . Estos métodos de extensión usan para registrar esquemas con la configuración adecuada.
  • Con menos frecuencia, llamando a directamente.

Por ejemplo, el código siguiente registra los servicios de autenticación y los controladores para los esquemas de autenticación de portador de JWT y de :

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

El parámetro de es el nombre del esquema que se usará de forma predeterminada si no se solicita un esquema específico.

Si se usan varios esquemas, las directivas de autorización (o los atributos de autorización) pueden especificar el esquema (o esquemas) de autenticación del que dependen para autenticar al usuario. En el ejemplo anterior, se podría especificar el nombre del esquema de autenticación de ( de forma predeterminada, aunque se podría proporcionar otro nombre al llamar a ).

En algunos casos, la llamada a se realiza automáticamente mediante otros métodos de extensión. Por ejemplo, al usar ASP.NET Core Identity, se llama a AddAuthentication internamente.

El middleware de autenticación se añade en mediante la llamada a . La llamada a registra el middleware que usa los esquemas de autenticación previamente registrados. Llame a antes de cualquier middleware que dependa de que los usuarios estén autenticados.

Conceptos de autenticación

La autenticación es responsable de proporcionar el elemento para la autorización sobre el que tomar decisiones relativas a los permisos. Hay varios enfoques de esquema de autenticación para seleccionar el controlador de autenticación responsable de generar el conjunto correcto de reclamaciones:

  • Esquema de autenticación
  • El esquema de autenticación predeterminado, que se describe en la sección siguiente.
  • Establezca directamente .

No hay sondeos automáticos de esquemas. Si no se especifica el esquema predeterminado, el esquema se debe especificar en el atributo authorize; de lo contrario, se producirá el error siguiente:

Excepción de operación no válida: No se especificó un esquema de autenticación y no se encontró un esquema de autenticación predeterminado. Los esquemas predeterminados se pueden establecer mediante AddAuthentication(string defaultScheme) o AddAuthentication(ActionAuthenticationOptions configureOptions).

Esquema de autenticación

El esquema de autenticación puede seleccionar el controlador de autenticación encargado de generar el conjunto correcto de declaraciones. Para obtener más información, vea Autorizar con un esquema específico.

Un esquema de autenticación es un nombre que corresponde a:

  • Un controlador de autenticación.
  • Opciones para configurar esa instancia específica del controlador.

Los esquemas son útiles como mecanismo para hacer referencia a los comportamientos de autenticación, desafío y prohibición del controlador asociado. Por ejemplo, una directiva de autorización puede usar nombres de esquemas para especificar qué esquema (o esquemas) de autenticación conviene usar para autenticar al usuario. Al configurar la autenticación, es habitual especificar un esquema de autenticación predeterminado. A menos que un recurso solicite un esquema específico, se usará el predeterminado. También es posible:

  • Especificar distintos esquemas predeterminados que se usarán para las acciones de autenticación, desafío y prohibición.
  • Combinar varios esquemas en uno mediante esquemas de directiva.

Controlador de autenticación

Un controlador de autenticación:

  • Es un tipo que implementa el comportamiento de un esquema.
  • Se deriva de o .
  • Tiene la responsabilidad principal de autenticar a los usuarios.

Según la configuración del esquema de autenticación y el contexto de la solicitud entrante, los controladores de autenticación:

  • Si la autenticación se realiza correctamente, construya objetos que representen la identidad del usuario.
  • Devuelven "sin resultados" o "error" si la autenticación no es correcta.
  • Disponer de métodos para desafiar y restringir acciones cuando los usuarios intentan acceder a recursos.
    • No están autorizados a acceder (prohibido).
    • Cuando no están autenticados (desafío).

frente a

es la clase para la autenticación que requiere un paso de autenticación remota. Una vez finalizado el paso de autenticación remota, el controlador vuelve a llamar al establecido por el controlador. El controlador finaliza el paso de autenticación con la información que se pasa a la ruta de devolución de llamada . OAuth 2.0 y OIDC ambos usan este patrón. JWT y cookies no lo usan, ya que pueden usar directamente el encabezado de portador y para autenticarse. El proveedor hospedado de forma remota en este caso:

  • Es el proveedor de autenticación.
  • Algunos ejemplos son Facebook, Twitter, Google, Microsoft y cualquier otro proveedor de OIDC que controle la autenticación de los usuarios mediante el mecanismo de controladores.

Autenticar

La acción de autenticación de un esquema de autenticación es responsable de construir la identidad del usuario en función del contexto de solicitud. Devuelve un que indica si la autenticación se realizó correctamente y, si es así, la identidad del usuario en un vale de autenticación. Consulte . Ejemplos de autenticación:

  • Un esquema de autenticación que construye la identidad del usuario a partir de cookies.
  • Esquema de portador JWT que deserializa y valida un token de portador JWT para construir la identidad del usuario.

Desafío

La autorización invoca un desafío de autenticación si un usuario no autenticado solicita un punto de conexión que requiere autenticación. Se emite un desafío de autenticación si, por ejemplo, un usuario anónimo solicita un recurso restringido o sigue un vínculo de inicio de sesión. La autorización invoca un desafío mediante los esquemas de autenticación especificados o el valor predeterminado si no se especifica ninguno. Consulte . Ejemplos de desafío de autenticación:

  • Un esquema de autenticación de que redirige al usuario a una página de inicio de sesión.
  • Un esquema portador de JWT que devuelve un resultado 401 con un encabezado .

Una acción de desafío debe indicar al usuario qué mecanismo de autenticación usar para access el recurso solicitado.

Prohibición

La autorización llama a una acción de denegación de un esquema de autenticación cuando un usuario autenticado intenta acceder a un recurso al que no tiene permiso para acceder. Consulte . Ejemplos de prohibición de autenticación:

  • Esquema de autenticación cookie que redirige al usuario a una página que indica que el acceso estaba prohibido.
  • Un esquema portador JWT que devuelve un resultado 403.
  • Un esquema de autenticación personalizado que redirige a una página donde el usuario puede solicitar access al recurso.

Una acción de prohibición puede permitir que los usuarios sepan que:

  • Están autenticados.
  • No se les permite acceder al recurso solicitado.

Consulte los vínculos siguientes para conocer las diferencias entre desafío y prohibición:

  • Desafía y prohíbe con un gestor de recursos operativos
  • Diferencias entre desafío y prohibir

Proveedores de autenticación por inquilino

ASP.NET Core no tiene una solución integrada para la autenticación multiinquilino. Aunque es posible que los clientes escriban uno con las características integradas, se recomienda que los clientes consideren Orchard Core o ABP Framework para la autenticación multiinquilino.

Orchard Core es:

  • Un marco de aplicación de código abierto, modular y multiinquilino creado con ASP.NET Core.
  • Un sistema de administración de contenido (CMS) basado en el marco de la aplicación.

Consulte el origen Orchard Core para obtener un ejemplo de proveedores de autenticación por inquilino.

El Marco de ABP admite varios patrones arquitectónicos, como modularidad, microservicios, diseño dirigido por el dominio y multiarrendamiento. Vea el código fuente de ABP Framework en GitHub.

Recursos adicionales

Por Mike Rousos

La autenticación es el proceso de determinar la identidad de un usuario. Authorization es el proceso de determinar si un usuario tiene acceso a un recurso. En ASP.NET Core, el servicio de autenticación controla la autenticación, IAuthenticationService, que usa la autenticación middleware. El servicio de autenticación usa controladores de autenticación registrados para completar las acciones relacionadas con la autenticación. Estos son algunos ejemplos de acciones relacionadas con la autenticación:

  • Autenticación de un usuario
  • Responder cuando un usuario no autenticado intenta acceder a un recurso restringido.

Los controladores de autenticación registrados y sus opciones de configuración se denominan "esquemas".

Para especificar esquemas de autenticación, es necesario registrar servicios de autenticación en :

  • Mediante una llamada a un método de extensión específico del esquema tras una llamada a (por ejemplo, o ). Estos métodos de extensión usan para registrar esquemas con la configuración adecuada.
  • Con menos frecuencia, llamando a directamente.

Por ejemplo, el código siguiente registra los servicios de autenticación y los controladores para los esquemas de autenticación de portador de JWT y de :

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => Configuration.Bind("CookieSettings", options));

El parámetro de es el nombre del esquema que se usará de forma predeterminada si no se solicita un esquema específico.

Si se usan varios esquemas, las directivas de autorización (o los atributos de autorización) pueden especificar el esquema (o esquemas) de autenticación del que dependen para autenticar al usuario. En el ejemplo anterior, se podría especificar el nombre del esquema de autenticación de ( de forma predeterminada, aunque se podría proporcionar otro nombre al llamar a ).

En algunos casos, la llamada a se realiza automáticamente mediante otros métodos de extensión. Por ejemplo, al usar ASP.NET Core Identity, se llama a AddAuthentication internamente.

El middleware de autenticación se añade en mediante la llamada a . La llamada a registra el middleware que usa los esquemas de autenticación previamente registrados. Llame a antes de cualquier middleware que dependa de que los usuarios estén autenticados. Al usar el enrutamiento de punto de conexión, la llamada a debe ir:

  • Después de , para que la información de ruta esté disponible para las decisiones de autenticación.
  • Antes de , para que los usuarios se autentiquen como paso previo para tener acceso a los puntos de conexión.

Conceptos de autenticación

La autenticación es responsable de proporcionar el elemento para la autorización sobre el que tomar decisiones relativas a los permisos. Hay varios enfoques de esquema de autenticación para seleccionar el controlador de autenticación responsable de generar el conjunto correcto de reclamaciones:

  • Esquema de autenticación
  • El esquema de autenticación predeterminado, que se describe en la sección siguiente.
  • Establezca directamente .

No hay sondeos automáticos de esquemas. Si no se especifica el esquema predeterminado, el esquema se debe especificar en el atributo authorize; de lo contrario, se producirá el error siguiente:

Excepción de operación no válida: No se especificó un esquema de autenticación y no se encontró un esquema de autenticación predeterminado. Los esquemas predeterminados se pueden establecer mediante AddAuthentication(string defaultScheme) o AddAuthentication(ActionAuthenticationOptions configureOptions).

Esquema de autenticación

El esquema de autenticación puede seleccionar el controlador de autenticación encargado de generar el conjunto correcto de declaraciones. Para obtener más información, vea Autorizar con un esquema específico.

Un esquema de autenticación es un nombre que corresponde a:

  • Un controlador de autenticación.
  • Opciones para configurar esa instancia específica del controlador.

Los esquemas son útiles como mecanismo para hacer referencia a los comportamientos de autenticación, desafío y prohibición del controlador asociado. Por ejemplo, una directiva de autorización puede usar nombres de esquemas para especificar qué esquema (o esquemas) de autenticación conviene usar para autenticar al usuario. Al configurar la autenticación, es habitual especificar un esquema de autenticación predeterminado. A menos que un recurso solicite un esquema específico, se usará el predeterminado. También es posible:

  • Especificar distintos esquemas predeterminados que se usarán para las acciones de autenticación, desafío y prohibición.
  • Combinar varios esquemas en uno mediante esquemas de directiva.

Controlador de autenticación

Un controlador de autenticación:

  • Es un tipo que implementa el comportamiento de un esquema.
  • Se deriva de o .
  • Tiene la responsabilidad principal de autenticar a los usuarios.

Según la configuración del esquema de autenticación y el contexto de la solicitud entrante, los controladores de autenticación:

  • Si la autenticación se realiza correctamente, construya objetos que representen la identidad del usuario.
  • Devuelven "sin resultados" o "error" si la autenticación no es correcta.
  • Disponer de métodos para desafiar y restringir acciones cuando los usuarios intentan acceder a recursos.
    • No están autorizados a acceder (prohibido).
    • Cuando no están autenticados (desafío).

frente a

es la clase para la autenticación que requiere un paso de autenticación remota. Una vez finalizado el paso de autenticación remota, el controlador vuelve a llamar al establecido por el controlador. El controlador finaliza el paso de autenticación con la información que se pasa a la ruta de devolución de llamada . OAuth 2.0 y OIDC ambos usan este patrón. JWT y cookies no lo usan, ya que pueden usar directamente el encabezado de portador y para autenticarse. El proveedor hospedado de forma remota en este caso:

  • Es el proveedor de autenticación.
  • Algunos ejemplos son Facebook, Twitter, Google, Microsoft y cualquier otro proveedor de OIDC que controle la autenticación de los usuarios mediante el mecanismo de controladores.

Autenticar

La acción de autenticación de un esquema de autenticación es responsable de construir la identidad del usuario en función del contexto de solicitud. Devuelve un que indica si la autenticación se realizó correctamente y, si es así, la identidad del usuario en un vale de autenticación. Consulte . Ejemplos de autenticación:

  • Un esquema de autenticación que construye la identidad del usuario a partir de cookies.
  • Esquema de portador JWT que deserializa y valida un token de portador JWT para construir la identidad del usuario.

Desafío

La autorización invoca un desafío de autenticación si un usuario no autenticado solicita un punto de conexión que requiere autenticación. Se emite un desafío de autenticación si, por ejemplo, un usuario anónimo solicita un recurso restringido o sigue un vínculo de inicio de sesión. La autorización invoca un desafío mediante los esquemas de autenticación especificados o el valor predeterminado si no se especifica ninguno. Consulte . Ejemplos de desafío de autenticación:

  • Un esquema de autenticación de que redirige al usuario a una página de inicio de sesión.
  • Un esquema portador de JWT que devuelve un resultado 401 con un encabezado .

Una acción de desafío debe indicar al usuario qué mecanismo de autenticación usar para access el recurso solicitado.

Prohibición

La autorización llama a una acción de denegación de un esquema de autenticación cuando un usuario autenticado intenta acceder a un recurso al que no tiene permiso para acceder. Consulte . Ejemplos de prohibición de autenticación:

  • Esquema de autenticación cookie que redirige al usuario a una página que indica que el acceso estaba prohibido.
  • Un esquema portador JWT que devuelve un resultado 403.
  • Un esquema de autenticación personalizado que redirige a una página donde el usuario puede solicitar access al recurso.

Una acción de prohibición puede permitir que los usuarios sepan que:

  • Están autenticados.
  • No se les permite acceder al recurso solicitado.

Consulte los vínculos siguientes para conocer las diferencias entre desafío y prohibición:

  • Desafía y prohíbe con un gestor de recursos operativos
  • Diferencias entre desafío y prohibir

Proveedores de autenticación por inquilino

ASP.NET Core framework no tiene una solución integrada para la autenticación multitenant. Aunque es posible que los clientes escriban una aplicación con autenticación multiinquilino, se recomienda usar uno de los siguientes marcos de aplicaciones de ASP.NET Core que admiten la autenticación multiinquilino.

Orchard Core es un marco de aplicación de código abierto, modular y multiinquilino creado con ASP.NET Core que también proporciona un sistema de administración de contenido (CMS). Consulte el origen Orchard Core para obtener un ejemplo de proveedores de autenticación por inquilino.

ABP Framework admite varios patrones arquitectónicos, como modularidad, microservicios, diseño controlado por dominio y multiinquilino. Vea el código fuente de ABP Framework en GitHub.

Recursos adicionales