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.

Implementación de autorización basada en LDAP en Blazor.

Tengo una pregunta y una solicitud sencilla. Estoy tratando de crear un mecanismo de autenticación y autorización simple en Blazor. El problema es que la base para ese mecanismo no es una base de datos, sino LDAP (todos los ejemplos y tutoriales se basan en el almacenamiento de bases de datos).

Por lo que entiendo ahora, en Blazor se ve así:

En startup.cs estoy agregando la entidad y el almacenamiento predeterminados (he escrito una biblioteca sencilla basada en la biblioteca LDAP de novell para obtener credenciales para verificar si el usuario existe en LDAP y obtener el grupo de usuarios).

Usando la base de datos, se vería así (crear identidad predeterminada y configurar el almacenamiento)

// reemplace esto con la validación de cuenta LDAP
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()

Sé que sería posible hacer esto utilizando un controlador con enrutamiento, pero me pregunto si hay una manera más elegante que agregar un controlador a la aplicación del servidor Blazor.

A continuación, agrego la revalidación para verificar el usuario cada cierto período de tiempo:

services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();

y agrego autorización y autenticación a la aplicación:

app.UseAuthentication();
app.UseAuthorization();

¿Pero cómo se vería si quisiera usar otra fuente de almacenamiento de datos de usuario (en mi ejemplo LDAP)?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para implementar la autenticación y autorización usando LDAP como fuente de datos en Blazor, sería necesario realizar cambios en los mecanismos de almacenamiento y autenticación.

    En primer lugar, debería crear un proveedor de almacenamiento personalizado que autentique a los usuarios contra el servidor LDAP en lugar de una base de datos. Esto se puede lograr creando una implementación personalizada de la interfaz IUserStore que utilice operaciones de consulta LDAP para conectarse con el servidor LDAP y recuperar información del usuario. También debería crear una implementación personalizada de la interfaz IRoleStore para recuperar los roles de usuario de LDAP.

    A continuación, podría aprovechar los mecanismos de autenticación y autorización de Blazor existentes registrando el proveedor de almacenamiento personalizado con el middleware de autenticación usando el método AddIdentity(). En este paso, también debería personalizar el objeto IdentityOptions para establecer las opciones adecuadas para iniciar sesión y generar tokens usando los resultados de la consulta LDAP.

    Finalmente, debería configurar el AuthenticationHandler y el AuthorizationMiddleware para admitir la autenticación y autorización de LDAP usando los métodos AddAuthentication() y AddAuthorization(), respectivamente.

    En general, integrar LDAP como fuente de datos requiere personalizar los mecanismos de autenticación y autorización de Blazor para trabajar con proveedores de almacenamiento basados en LDAP.

Comments are closed.