Criar funções de aplicativo
Os papéis de aplicação são uma funcionalidade poderosa que pode e deve configurar ao realizar o registo de uma aplicação. Um papel de aplicação é uma reivindicação personalizada que pode ser aplicada a utilizadores, grupos ou aplicações. A reivindicação aparece no token gerado quando um utilizador se autentica para uma aplicação. Os dados da função do aplicativo no token podem ser usados no aplicativo para fins de autorização.
Principais Benefícios:
- Alternativa às "Claims" de Grupo: As funções de aplicação oferecem uma alternativa ao uso de grupos para autorização, o que ajuda a evitar problemas de excesso de grupos e não requer licenciamento Microsoft Entra ID P1
- Autorização detalhada: Permite um controlo preciso sobre o que os utilizadores podem fazer dentro da sua aplicação
- Código Simplificado: A sua aplicação pode verificar reivindicações específicas de funções em vez de mapear grupos para permissões
Para tirar partido desta funcionalidade, define-se papéis de aplicação que permitem utilizadores e grupos como tipos de membros. Como mostrado no ecrã seguinte, selecione Utilizadores/Grupos para Tipos de membros Permitidos ao criar funções de app.
Como as Funções de Aplicação Aparecem em Tokens
Depois de o administrador da aplicação criar os papéis da aplicação no registo da sua aplicação, os administradores de TI podem atribuir utilizadores e grupos a esses papéis. A sua aplicação recebe uma declaração de funções em tokens (tokens de ID para aplicações, tokens de acesso para APIs) contendo todas as funções atribuídas ao utilizador autenticado, conforme mostrado no seguinte exemplo de token:
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
"Approver",
"Reviewer"
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
Melhores Práticas para Funções de Aplicação
Defina sempre um papel base de utilizador: Ao criar papéis de aplicação que permitam utilizadores e grupos como membros, defina sempre um papel base de utilizador sem permissões de autorização elevadas. Quando uma configuração de Aplicativo Empresarial requer atribuição, somente usuários com atribuição direta a um aplicativo ou associação a um grupo atribuído ao aplicativo podem usar o aplicativo.
Requisitos de Trabalho: Quando um utilizador ou grupo é atribuído à aplicação, um dos papéis definidos da aplicação deve fazer parte da atribuição. Se a sua aplicação tiver funções elevadas (como "administrador") para a aplicação, então todos os utilizadores e grupos seriam automaticamente atribuídos ao papel de administrador, o que viola o princípio do privilégio mínimo.
Abordagem Recomendada: Quando defines um papel base (como "utilizador" ou "leitor"), os utilizadores e grupos atribuídos à aplicação podem receber esse papel base, garantindo níveis de acesso adequados.
Vantagens da Utilização de Funções de Aplicação
Evitar Reclamações por Excesso de Grupo: Para além de evitar reclamações por excesso de grupo, as funções de aplicação oferecem várias vantagens em relação à autorização tradicional baseada em grupos.
Lógica de Autorização Simplificada: Outra vantagem importante é não precisar de mapear entre grupos ou nomes e o seu significado na sua aplicação. Por exemplo, o seu código pode simplesmente procurar a declaração de função "admin". A alternativa é iterar entre grupos nos atributos de grupo e determinar quais os IDs de grupo que devem receber permissões de administrador.
Melhor Segurança e Manutenibilidade:
- Intenção Clara: Nomes de funções como "admin", "editor" e "viewer" são mais descritivos do que os GUIDs de grupo
- Complexidade Reduzida: Não é necessário manter mapeamentos de ID de grupo no código da sua aplicação
- Melhor Portabilidade: Os papéis de aplicação podem ser facilmente replicados em diferentes ambientes