Tutorial: Uso del control de acceso basado en roles en .NET MAUI
En este tutorial se muestra cómo agregar roles de aplicación a la interfaz de usuario de aplicaciones multiplataforma (.NET MAUI) de .NET y cómo recibirlos en el token de identificador.
En este tutorial, aprenderá a:
- Acceda a los roles del token de identificador.
Requisitos previos
- Tutorial: inicio de sesión de usuarios en la aplicación de shell de .NET MAUI
- Uso del control de acceso basado en roles (RBAC) para las aplicaciones
Recepción de notificaciones de grupos y roles en .NET MAUI
Una vez configurado el inquilino del cliente, puede recuperar los roles y las notificaciones de grupos en la aplicación cliente. Las notificaciones de roles y grupos están presentes tanto en el token de identificador como en el token de acceso. Los tókenes de acceso solo se validan en las API web que el cliente ha adquirido con ese fin. El cliente no debe validar los tokens de acceso.
.NET MAUI debe comprobar las notificaciones de roles de aplicación en el token de identificador para implementar la autorización en el lado cliente.
En esta serie de tutoriales, creó una aplicación de .NET MAUI donde desarrolló ClaimsView.xaml.cs para controlar los datos ClaimsView
. En este archivo, inspeccionamos el contenido de los tokens de identificador. El valor de la notificación de roles se comprueba en el siguiente fragmento de código:
Para acceder a la notificación de rol, puede modificar el fragmento de código de la siguiente manera:
var idToken = PublicClientSingleton.Instance.MSALClientHelper.AuthResult.IdToken;
var handler = new JwtSecurityTokenHandler();
var token = handler.ReadJwtToken(idToken);
// Get the role claim value
var roleClaim = token.Claims.FirstOrDefault(c => c.Type == "roles")?.Value;
if (!string.IsNullOrEmpty(roleClaim))
{
// If the role claim exists, add it to the IdTokenClaims
IdTokenClaims = new List<string> { roleClaim };
}
else
{
// If the role claim doesn't exist, add a message indicating that no role claim was found
IdTokenClaims = new List<string> { "No role claim found in ID token" };
}
Claims.ItemsSource = IdTokenClaims;
Nota:
Para leer el token de identificador, debe instalar el paquete System.IdentityModel.Tokens.Jwt
.
Si asigna un usuario a varios roles, la cadena de roles contiene todos los roles separados por una coma, como Orders.Manager, Store.Manager,...
. Asegúrese de compilar la aplicación para controlar las condiciones siguientes:
- Ausencia de notificaciones de roles en el token
- El usuario no se ha asignado a ningún rol
- Varios valores de la notificación de roles al asignar un usuario a varios roles
Al definir roles de aplicación para la aplicación, es su responsabilidad implementar la lógica de autorización para esos roles.
Pasos siguientes
Para obtener más información sobre las notificaciones de grupo y tomar decisiones informadas sobre el uso de roles o grupos de aplicaciones, consulte: