Partilhar via


Tutorial: Usar controle de acesso baseado em função em seu .NET MAUI

Este tutorial demonstra como adicionar funções de aplicativo to.NET UI de aplicativo multiplataforma (.NET MAUI) e recebê-las no token de ID.

Neste tutorial, irá aprender a:

  • Acesse as funções no token de ID.

Pré-requisitos

Receber declarações de grupos e funções no .NET MAUI

Depois de configurar o locatário do cliente, você pode recuperar suas funções e declarações de grupos em seu aplicativo cliente. As declarações de funções e grupos estão presentes no token de ID e no token de acesso. Os tokens de acesso só são validados nas APIs da Web para as quais foram adquiridos por um cliente. O cliente não deve validar tokens de acesso.

O MAUI .NET precisa verificar as declarações de funções do aplicativo no token de ID para implementar a autorização no lado do cliente.

Nesta série de tutoriais, você criou um aplicativo .NET MAUI onde desenvolveu o ClaimsView.xaml.cs para lidar com ClaimsView dados. Neste arquivo, inspecionamos o conteúdo dos tokens de ID. O valor da declaração de funções é verificado no seguinte trecho de código:

Para acessar a declaração de função, você pode modificar o trecho de código da seguinte maneira:

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 ler o token de ID, você deve instalar o System.IdentityModel.Tokens.Jwt pacote.

Se você atribuir um usuário a várias funções, a cadeia de caracteres de funções conterá todas as funções separadas por uma vírgula, como Orders.Manager, Store.Manager,.... Certifique-se de criar seu aplicativo para lidar com as seguintes condições:

  • Ausência de declarações de funções no token
  • O usuário não foi atribuído a nenhuma função
  • Vários valores na declaração de funções quando você atribui um usuário a várias funções

Quando você define funções de aplicativo para seu aplicativo, é sua responsabilidade implementar a lógica de autorização para essas funções.

Próximos passos

Para obter mais informações sobre declarações de grupo e tomada de decisões informadas sobre o uso de funções ou grupos de aplicativos, consulte: