Configurar declarações de grupo e funções de aplicativo em tokens
Este artigo ajuda você a configurar seus aplicativos com definições de função de aplicativo e atribuir grupos de segurança a funções de aplicativo para que você possa melhorar a flexibilidade e o controle e, ao mesmo tempo, aumentar a segurança do aplicativo com o menor privilégio.
O Microsoft Entra ID oferece suporte ao envio de grupos de segurança de atribuídos a um usuário, funções de diretório do Microsoft Entra e grupos de distribuição como declarações em um token. Você pode usar essa abordagem para direcionar a autorização em aplicativos. No entanto, o Microsoft Entra ID limita o suporte de grupo em um token pelo tamanho do token. Quando o usuário é membro de muitos grupos, não há grupos no token.
Neste artigo, você aprenderá uma abordagem alternativa para obter informações do usuário em tokens usando o suporte de grupo do Microsoft Entra. Em vez disso, você configura seus aplicativos com definições de função de aplicativo e atribui grupos a funções de aplicativo. Isso as melhores práticas do desenvolvedor do Zero Trust melhora a flexibilidade e o controle, ao mesmo tempo em aumenta a segurança do aplicativo com o mínimo de privilégios.
Você pode configurar declarações de grupo em tokens que você pode usar em seus aplicativos para autorização. Lembre-se de que as informações do grupo no token são atualizadas somente quando você recebe o token. As reclamações de grupo suportam dois padrões principais:
- Grupos identificados pelo atributo OID (identificador de objeto do Microsoft Entra).
- Grupos identificados pelo atributo
sAMAccountName
ouGroupSID
para grupos e usuários sincronizados com o Ative Directory.
A associação ao grupo pode orientar as decisões de autorização. Por exemplo, o exemplo a seguir mostra algumas declarações em um token. Você pode adicionar declarações de grupo e funções a tokens de ID ou de acesso.
"aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1669657224, "nbf": 1669657224, "exp": 1669661124,
"groups": [
"0760b6cf-170e-4a14-91b3-4b78e0739963",
"3b2b0c93-acd8-4208-8eba-7a48db1cd4c0"
],
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"sub": "3OBtLXUC2ZrN_ADLNjW9X4o0lcd61py7lgHw3Skh77s",
"tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
"ver": "2.0",
"wids": [
"cf1c38e5-3621-4004-a7cb-879624dced7c",
"b79fbf4d-3ef9-4689-8143-76b194e85509"
]
A matriz de declarações groups
compreende as IDs dos grupos aos quais esse usuário é membro. A matriz wids
compreende as IDs das funções do Microsoft Entra atribuídas a esse usuário. Aqui, cf1c38e5-3621-4004-a7cb-879624dced7c
mostra que as funções atribuídas a esse usuário incluem Desenvolvedor de Aplicativos e membro padrão, conforme 3b2b0c93-acd8-4208-8eba-7a48db1cd4c0
indica.
Seu aplicativo pode tomar decisões de autorização com base na presença ou ausência dessas declarações e seus valores. Consulte funções internas da Microsoft Entra para obter uma lista de valores para a declaração wids
.
Para adicionar as declarações de groups
e wids
aos seus tokens, selecione Todos os grupos, conforme mostrado no exemplo a seguir da tela Registros de aplicativos | Configuração de token | Declarações opcionais | Editar de declaração de grupos.
Excesso de grupo
Quando você solicita todos os grupos em seu token, conforme mostrado no exemplo acima, você não pode confiar que o token tenha a declaração groups
em seu token. Existem limites de tamanho para tokens e afirmações groups
, para que não se tornem demasiado grandes. Quando o usuário é membro de muitos grupos, seu aplicativo precisa obter a associação de grupo do usuário do Microsoft Graph. Os limites para grupos numa reivindicação groups
são:
- 200 grupos para web tokens JSON (JWT).
- 150 grupos para tokens SAML (Security Assertion Markup Language).
- Seis grupos ao usar o fluxo implícito (por exemplo, usando ASP.NET Core que obtém tokens de identificação através do componente de fluxo implícito de um processo híbrido).
- O fluxo implícito não é mais recomendado para aplicativos Web de página única.
- O fluxo implícito pode ser usado em aplicativos Web apenas para o token de ID, nunca o token de acesso, em um fluxo híbrido OAuth2.
Se você estiver usando OpenID Connect ou OAuth2, poderá ter até 200 grupos em seu token. Se você estiver usando SAML, poderá ter apenas 150 grupos porque os tokens SAML são maiores que os tokens OAuth2 e OpenID Connect. Se você estiver usando o fluxo implícito, o limite é seis porque essas respostas aparecem na URL. Em todos estes casos, em vez de ter uma declaração de groups
, vê uma indicação (conhecida como um superávit de grupos) que informa que o utilizador é membro de demasiados grupos para caber no seu token.
A reivindicação groups
deverá ser mapeada para src1
. Em teoria, você procuraria a reivindicação _claim_sources
e, em seguida, encontraria o membro src1
. A partir daí, encontrará a consulta Graph que utilizará para obter a associação do grupo. No entanto, há um problema com o que você vê no exemplo de consulta do Graph. Ele vai para o Azure AD Graph (que a Microsoft está a descontinuar), então não o utilizes.
A indicação implícita de excesso de fluxo é feita com uma declaração hasgroups
em vez de uma declaração groups
.
A fim de garantir a autorização adequada através da associação de grupo, faça com que o seu aplicativo verifique a declaração groups
. Se estiver presente, use essa declaração para determinar a associação de grupo do usuário. Se não houver nenhuma declaração groups
, verifique a existência de uma declaração hasgroups
ou uma declaração _claim_names
com um membro groups
da matriz. Se qualquer uma dessas afirmações estiver presente, o usuário pertence a muitos grupos em relação ao token. Nesse caso, seu aplicativo deve usar o Microsoft Graph para determinar a associação de grupo para o usuário. Consulte Listar as associações (diretas e transitivas) de um usuário para encontrar todos os grupos, diretos e transitivos, dos quais o usuário é membro.
Se o seu aplicativo exigir informações de associação de grupo em tempo real, use o Microsoft Graph para determinar a associação ao grupo. Lembre-se de que as informações no token que você recebe estão atualizadas apenas no momento em que você adquire o token.
Veja o exemplo a seguir da tela de Registros de aplicativos | Configuração de tokens | Declarações opcionais | Editar declaração de grupos. Uma maneira de evitar atingir uma reivindicação de excesso de grupo é selecionar Grupos atribuídos à aplicação na tela Editar reivindicação de grupos em vez de Todos os grupos.
Quando você seleciona Grupos atribuídos ao aplicativo, um grupo é incluído na declaração groups
se as seguintes condições forem verdadeiras:
- o grupo é atribuído ao Enterprise App
- o usuário é um membro direto do grupo
A partir da publicação deste artigo, os Grupos atribuídos ao aplicativo na opção não oferecem suporte à associação indireta. A atribuição em grupo exige pelo menos uma licença de nível P1. Um locatário gratuito não pode atribuir grupos a uma aplicação.
Grupos e funções do aplicativo
Outra maneira de evitar o problema de excesso de grupo é o aplicativo definir funções que permitam usuários e grupos como tipos de membros. Conforme mostrado no exemplo a seguir da tela Registos de aplicativo | Funções de aplicativo | Criar função de app, selecione Usuários/Grupos para Tipos de membros permitidos.
Tendo criado a função da aplicação no registo da aplicação, os profissionais de TI podem atribuir utilizadores e grupos à função. Seu aplicativo recebe uma declaração de roles
em seu token (token de ID para aplicativo, token de acesso para APIs) com todas as funções atribuídas do usuário conectado, conforme mostrado no exemplo de token a seguir.
"aud": "11112222-bbbb-3333-cccc-4444dddd5555",
"iss": "https://login.microsoftonline.com/833ced3d-cb2e-41de-92f1-29e2af035ddc/v2.0",
"iat": 1670826509, "nbf": 1670826509, "exp": 1670830409,
"name": "Kyle Marsh",
"oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"preferred_username": "kylemar@idfordevs.dev",
"roles": [
"Approver",
"Reviewer"
],
"sub": "dx-4lf-0loB3c3uVrULnZ2VTLuRRWYff0q7-QlIfYU4",
"tid": "ccccdddd-2222-eeee-3333-ffff4444aaaa",
Lembre-se de fazer com que seu aplicativo lide com as seguintes condições:
- Ausência da alegação
roles
- O usuário não tem atribuição de função
- Vários valores na declaração
roles
quando o usuário tem mais de uma atribuição de função
Ao criar funções de aplicativo que permitem usuários e grupos como membros, sempre defina uma função de usuário de linha de base sem funçõ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.
Se o seu aplicativo tiver definido funções de aplicativo que permitem usuários e grupos como membros, então, quando um usuário ou grupo for atribuído ao aplicativo, uma das funções de aplicativo definidas deverá fazer parte da atribuição do usuário ou grupo ao aplicativo. Se o seu aplicativo tiver definido apenas funções elevadas (como admin
) para o aplicativo, todos os usuários e grupos receberão a função de administrador. Quando você define uma função base (como user
), os usuários e grupos atribuídos ao aplicativo podem receber a função de usuário base.
Além de evitar declarações de excesso de grupo, outra vantagem de usar funções é não precisar mapear entre um ID ou nome de grupo e o que isso significa em seu aplicativo. Por exemplo, o seu código pode procurar a reivindicação de função de administrador em vez de iterar pelos grupos nas reivindicações groups
e decidir quais IDs de grupo devem permitir a funcionalidade de administrador.
Verificar e usar funções em seu código
Quando você define funções de aplicativo para seu aplicativo, é sua responsabilidade implementar a lógica de autorização para essas funções. Consulte Implementar controle de acesso baseado em função em aplicativos para saber como implementar a lógica de autorização em seus aplicativos.
Próximos passos
- Personalizar tokens descreve as informações que você pode receber nos tokens do Microsoft Entra. Ele explica como personalizar tokens para melhorar a flexibilidade e o controle e, ao mesmo tempo, aumentar a segurança de confiança zero do aplicativo com o menor privilégio.
- Configurar declarações de grupo para aplicativos usando o Microsoft Entra ID mostra como o Microsoft Entra ID pode fornecer informações de associação de grupo de um usuário em tokens para uso em aplicativos.
- Práticas recomendadas de segurança para propriedades de aplicativos descreve URI de redirecionamento, tokens de acesso (usados para fluxos implícitos), certificados e segredos, URI de ID de aplicativo e propriedade do aplicativo.
- escopos da plataforma de identidade da Microsoft, permissões, & consentimento explica os conceitos fundamentais de acesso e autorização para ajudá-lo a criar aplicativos mais seguros e confiáveis.
- Use práticas recomendadas de desenvolvimento de gerenciamento de acesso e identidade Zero Trust em seu ciclo de vida de desenvolvimento de aplicativos para criar aplicativos seguros.