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
- Tutorial: Entrar em usuários no aplicativo shell .NET MAUI
- Usando o controle de acesso baseado em função (RBAC) para aplicativos
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: