Compartilhar via


Proteger aplicativos EAP Java JBoss usando funções e declarações de função

Este artigo demonstra um aplicativo EAP Java JBoss que usa o OpenID Connect para entrar usuários e funções de aplicativo do Microsoft Entra ID (funções de aplicativo) para autorização.

Este aplicativo implementa o controle de acesso baseado em função (RBAC) usando as funções de aplicativo e o recurso de declarações de função do Microsoft Entra ID. Outra abordagem é usar grupos de ID do Microsoft Entra e declarações de grupo. Os grupos de ID do Microsoft Entra e as funções de aplicativo não são mutuamente exclusivos. Você pode usá-los para fornecer controle de acesso refinado.

Você também pode usar o RBAC com funções de aplicativo e declarações de função para impor políticas de autorização com segurança.

Para obter um vídeo que aborda esse cenário e este exemplo, consulte Implementar autorização em seus aplicativos usando funções de aplicativo, grupos de segurança, escopos e funções de diretório.

Para obter mais informações sobre como os protocolos funcionam neste cenário e em outros cenários, consulte Autenticação versus autorização.

Este aplicativo usa MSAL para Java (MSAL4J) para entrar em um usuário e obter um token de ID do Microsoft Entra ID.

Este exemplo primeiro usa o MSAL para Java (MSAL4J) para entrar no usuário. Na página inicial, ele exibe uma opção para o usuário exibir as declarações em seus tokens de ID. Este aplicativo também permite que os usuários exibam uma página de administrador privilegiada ou uma página de usuário regular, dependendo da função do aplicativo à qual foram atribuídos. A ideia é fornecer um exemplo de como, dentro de um aplicativo, o acesso a determinadas funcionalidades ou páginas é restrito a subconjuntos de usuários, dependendo de qual função eles pertencem.

Esse tipo de autorização é implementado usando RBAC. Com o RBAC, um administrador concede permissões a funções, não a usuários ou grupos individuais. O administrador pode atribuir funções a diferentes usuários e grupos para controlar quem tem acesso a determinados conteúdos e funcionalidades.

Este aplicativo de exemplo define as duas funções de aplicativo a seguir:

  • PrivilegedAdmin: Autorizado a acessar as páginas Somente administradores e Usuários regulares.
  • RegularUser: Autorizado a acessar a página Usuários Regulares.

Essas funções de aplicativo são definidas no portal do Azure, no manifesto de registro do aplicativo. Quando um usuário entra no aplicativo, o Microsoft Entra ID emite uma declaração de funções para cada função concedida individualmente ao usuário na forma de associação de função.

Você pode atribuir usuários e grupos a funções por meio do portal do Azure ou programaticamente usando o Microsoft Graph e o Microsoft Azure AD PowerShell. Este artigo descreve ambas as técnicas.

Observação

As declarações de função não estarão presentes para usuários convidados em um locatário se o https://login.microsoftonline.com/common/ ponto de extremidade for usado como autoridade para entrar usuários. Você precisa entrar em um usuário em um ponto de extremidade locatário como https://login.microsoftonline.com/tenantid.

Pré-requisitos

  • JDK versão 8 ou superior
  • Maven 3
  • Um locatário do Microsoft Entra ID. Para obter mais informações, consulte Como obter um locatário do Microsoft Entra ID.
  • Uma conta de usuário em seu próprio locatário do Microsoft Entra ID se você quiser trabalhar apenas com contas no diretório organizacional - ou seja, no modo de locatário único. Se você ainda não criou uma conta de usuário em seu locatário, deve fazê-lo antes de continuar. Para obter mais informações, consulte Como criar, convidar e excluir usuários.

Recomendações

  • Alguma familiaridade com os Servlets Java / Jacarta.
  • Alguma familiaridade com o terminal Linux/OSX ou o Windows PowerShell.
  • jwt.ms para inspecionar seus tokens.
  • Fiddler para monitorar sua atividade de rede e solução de problemas.
  • Siga o Blog do Microsoft Entra ID para se manter atualizado com os desenvolvimentos mais recentes.

Configurar o exemplo

As seções a seguir mostram como configurar o aplicativo de exemplo.

Clonar ou fazer download do repositório de exemplo

Para clonar o exemplo, abra uma janela Bash e use o seguinte comando:

git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/3-Authorization-II/roles

Como alternativa, navegue até o repositório ms-identity-msal-java-samples e, em seguida, baixe-o como um arquivo .zip e extraia-o para o disco rígido.

Importante

Para evitar limitações de comprimento de caminho de arquivo no Windows, clone ou extraia o repositório em um diretório próximo à raiz do disco rígido.

Registrar o aplicativo de exemplo com seu locatário do Microsoft Entra ID

Há um projeto neste exemplo. As seções a seguir mostram como registrar o aplicativo usando o portal do Azure.

Escolha o locatário do Microsoft Entra ID onde você deseja criar seus aplicativos

Para escolher seu locatário, use as seguintes etapas:

  1. Entre no portal do Azure.

  2. Se sua conta estiver presente em mais de um locatário do Microsoft Entra ID, selecione seu perfil no canto do portal do Azure e selecione Alternar diretório para alterar sua sessão para o locatário desejado do Microsoft Entra ID.

Registrar o aplicativo (java-servlet-webapp-roles)

Primeiro, registre um novo aplicativo no portal do Azure seguindo as instruções em Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.

Em seguida, use as seguintes etapas para concluir o registro:

  1. Navegue até a página de registros de aplicativo da plataforma de identidade da Microsoft para desenvolvedores.

  2. Selecione Novo registro.

  3. Na página Registrar um aplicativo exibida, insira as seguintes informações de registro do aplicativo:

    • Na seção Nome, insira um nome de aplicativo significativo para exibição aos usuários do aplicativo - por exemplo, java-servlet-webapp-roles.

    • Em Tipos de conta suportados, selecione uma das seguintes opções:

      • Selecione Contas neste diretório organizacional somente se estiver criando um aplicativo para uso apenas por usuários em seu locatário - ou seja, um aplicativo de locatário único.
    • Na seção Redirecionar URI, selecione Web na caixa de combinação e insira o seguinte URI de redirecionamento: http://localhost:8080/msal4j-servlet-roles/auth/redirect.

  4. Selecione Registrar para criar o aplicativo.

  5. Na página de registro do aplicativo, localize e copie o valor de ID do aplicativo (cliente) para usar mais tarde. Use esse valor no(s) arquivo(s) de configuração do seu aplicativo.

  6. Selecione Salvar para salvar as alterações.

  7. Na página de registro do aplicativo, selecione Certificados e segredos no painel de navegação para abrir a página onde você pode gerar segredos e carregar certificados.

  8. Na seção Segredos do Cliente, escolha Novo Segredo do Cliente.

  9. Digite uma descrição - por exemplo, segredo do aplicativo.

  10. Selecione uma das durações disponíveis: Em 1 ano, Em 2 anos ou Nunca expira.

  11. Selecione Adicionar. O valor gerado é exibido.

  12. Copie e salve o valor gerado para uso em etapas posteriores. Você precisa desse valor para os arquivos de configuração do código. Esse valor não é exibido novamente e você não pode recuperá-lo por nenhum outro meio. Portanto, certifique-se de salvá-lo do portal do Azure antes de navegar para qualquer outra tela ou painel.

Definir as funções do aplicativo

Para definir as funções do aplicativo, use as seguintes etapas:

  1. Ainda no mesmo registro de aplicativo, selecione Funções de aplicativo no painel de navegação.

  2. Selecione Criar função de aplicativo e insira os seguintes valores:

    • Em Nome para exibição, insira um nome adequado - por exemplo, PrivilegedAdmin.
    • Em Tipos de membro permitidos, escolha Usuário.
    • Em Valor, insira PrivilegedAdmin.
    • Em Descrição, insira Administradores Privilegiados que podem exibir a Página de Administrador.
  3. Selecione Criar função de aplicativo e insira os seguintes valores:

    • Para Nome de exibição, insira um nome adequado - por exemplo, RegularUser.
    • Em Tipos de membro permitidos, escolha Usuário.
    • Em Value, insira RegularUser.
    • Em Descrição, insira RegularUsers que podem exibir a Página do Usuário.
  4. Selecione Aplicar para salvar as alterações.

Atribuir usuários às funções do aplicativo

Para adicionar usuários à função de aplicativo definida anteriormente, siga as diretrizes aqui: Atribuir usuários e grupos a funções.


Configurar o aplicativo (java-servlet-webapp-roles) para usar o registro do aplicativo

Use as seguintes etapas para configurar o aplicativo:

Observação

Nas etapas a seguir, ClientID é o mesmo que Application ID ou AppId.

  1. Abra o projeto em seu IDE.

  2. Abra o arquivo authentication.properties .

  3. Encontre a cadeia de caracteres {enter-your-tenant-id-here}. Substitua o valor existente pela ID do locatário do Microsoft Entra ID.

  4. Localize a cadeia de caracteres {enter-your-client-id-here} e substitua o valor existente pela ID do aplicativo ou clientId pelo java-servlet-webapp-call-graph aplicativo copiado do portal do Azure.

  5. Localize a cadeia de caracteres {enter-your-client-secret-here} e substitua o valor existente pelo valor que você salvou durante a criação do aplicativo, no portal do java-servlet-webapp-roles Azure.

  6. Localize a app.roles propriedade e verifique se o valor está definido como app.roles=admin PrivilegedAdmin, user RegularUser, ou substitua os nomes de suas funções específicas.

Compilar o exemplo

Para criar o exemplo usando o Maven, navegue até o diretório que contém o arquivo pom.xml para o exemplo e execute o seguinte comando:

mvn clean package

Esse comando gera um arquivo .war que você pode executar em vários servidores de aplicativos.

Execute o exemplo

As seções a seguir mostram como implantar o exemplo no Serviço de Aplicativo do Azure.

Pré-requisitos

Configurar o plug-in do Maven

O processo de implantação no Serviço de Aplicativo do Azure usa suas credenciais do Azure a partir da CLI do Azure automaticamente. Se a CLI do Azure não estiver instalada localmente, o plugin Maven será autenticado com o OAuth ou com as credenciais do dispositivo. Para obter mais informações, confira autenticação com plug-ins do Maven.

Use as seguintes etapas para configurar o plug-in:

  1. Execute o comando Maven mostrado ao lado para configurar a implantação. Esse comando ajuda você a configurar o sistema operacional do Serviço de Aplicativo, a versão Java e a versão do Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Para Criar nova configuração de execução, pressione Y e pressione Enter.

  3. Em Define value for OS, pressione 2 para Linux e pressione Enter.

  4. Em Define value for javaVersion, pressione 2 para Java 11 e pressione Enter.

  5. Em Define value for webContainer, pressione 1 para JBosseap7 e pressione Enter.

  6. Em Define value for pricingTier, pressione Enter para selecionar a camada P1v3 padrão.

  7. Em Confirmar, pressione Y e pressione Enter.

O exemplo a seguir mostra a saída do processo de implantação:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------

Depois de confirmar suas escolhas, o plug-in adiciona a configuração do plug-in e as configurações necessárias ao arquivo de pom.xml do projeto para configurar seu aplicativo para ser executado no Serviço de Aplicativo do Azure.

A parte relevante do arquivo pom.xml deve ser semelhante ao exemplo a seguir:

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Você pode modificar as configurações do Serviço de Aplicativo diretamente em seu pom.xml. Algumas configurações comuns são listadas na tabela a seguir:

Propriedade Obrigatório Descrição Versão
schemaVersion false A versão do esquema de configuração. Os valores com suporte são v1 e v2. 1.5.2
subscriptionId false A ID da assinatura. 0.1.0+
resourceGroup true O grupo de recursos do Azure para seu aplicativo. 0.1.0+
appName true O nome do seu aplicativo. 0.1.0+
region false A região na qual hospedar seu aplicativo. O valor padrão é centralus. Para regiões válidas, consulte Regiões com suporte. 0.1.0+
pricingTier false A camada de preços do seu aplicativo. O valor padrão é P1v2 para uma carga de trabalho de produção. O valor mínimo recomendado para desenvolvimento e teste Java é B2. Para saber mais, veja Preços do Serviço de Aplicativo 0.1.0+
runtime false A configuração do ambiente de tempo de execução. Para mais informações, confira Informações de configuração. 0.1.0+
deployment false Configuração de implantação. Para mais informações, confira Informações de configuração. 0.1.0+

Para obter a lista completa de configurações, veja a documentação de referência do plug-in. Todos os plug-ins do Azure Maven compartilham um conjunto comum de configurações. Para essas configurações, consulte Configurações comuns. Para obter configurações específicas do Serviço de Aplicativo do Azure, consulte Aplicativo do Azure: Detalhes de Configuração.

Certifique-se de guardar os appName valores e resourceGroup para uso posterior.

Preparar o aplicativo para implantação

Quando você implanta seu aplicativo no Serviço de Aplicativo, sua URL de redirecionamento muda para a URL de redirecionamento da instância do aplicativo implantado. Use as seguintes etapas para alterar essas configurações no arquivo de propriedades:

  1. Navegue até o arquivo authentication.properties do aplicativo e altere o valor do nome de domínio do app.homePage aplicativo implantado, conforme mostrado no exemplo a seguir. Por exemplo, se você escolheu example-domain o nome do aplicativo na etapa anterior, agora deve usar https://example-domain.azurewebsites.net para o app.homePage valor. Certifique-se de que você também alterou o protocolo de http para https.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. Depois de salvar esse arquivo, use o seguinte comando para recriar seu aplicativo:

    mvn clean package
    

Importante

Nesse mesmo arquivo authentication.properties, você tem uma configuração para o .aad.secret Não é uma boa prática implantar esse valor no Serviço de Aplicativo. Também não é uma boa prática deixar esse valor em seu código e potencialmente enviá-lo para seu repositório git. Para remover esse valor secreto do seu código, você pode encontrar orientações mais detalhadas na seção Implantar no Serviço de Aplicativo - Remover segredo . Esta orientação adiciona etapas extras para enviar o valor secreto para o Cofre de Chaves e para usar as Referências do Cofre de Chaves.

Atualizar o registro do aplicativo Microsoft Entra ID

Como o URI de redirecionamento muda para seu aplicativo implantado para o Serviço de Aplicativo do Azure, você também precisa alterar o URI de redirecionamento no registro do aplicativo Microsoft Entra ID. Use as seguintes etapas para fazer essa alteração:

  1. Navegue até a página de registros de aplicativo da plataforma de identidade da Microsoft para desenvolvedores.

  2. Use a caixa de pesquisa para pesquisar o registro do aplicativo - por exemplo, java-servlet-webapp-authentication.

  3. Abra o registro do aplicativo selecionando seu nome.

  4. Selecione Autenticação no menu.

  5. Na seção Redirecionar URIs da Web - , selecione Adicionar URI.

  6. Preencha o URI do seu aplicativo, anexando /auth/redirect - por exemplo, https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Selecione Salvar.

Implantar o aplicativo

Agora você está pronto para implantar seu aplicativo no Serviço de Aplicativo do Azure. Use o comando a seguir para verificar se você está conectado ao seu ambiente do Azure para executar a implantação:

az login

Com toda a configuração pronta em seu arquivo pom.xml , agora você pode usar o seguinte comando para implantar seu aplicativo Java no Azure:

mvn package azure-webapp:deploy

Após a conclusão da implantação, seu aplicativo estará pronto em http://<your-app-name>.azurewebsites.net/. Abra a URL com seu navegador da Web local, onde você deve ver a página inicial do msal4j-servlet-auth aplicativo.

Explorar o exemplo

Use as seguintes etapas para explorar o exemplo:

  1. Observe o status de entrada ou saída exibido no centro da tela.
  2. Selecione o botão sensível ao contexto no canto. Esse botão lê Entrar quando você executa o aplicativo pela primeira vez.
  3. Na próxima página, siga as instruções e entre com uma conta no locatário do Microsoft Entra ID.
  4. Na tela de consentimento, observe os escopos que estão sendo solicitados.
  5. Observe que o botão sensível ao contexto agora diz Sair e exibe seu nome de usuário.
  6. Selecione Detalhes do token de ID para ver algumas das declarações decodificadas do token de ID.
  7. Selecione Somente administradores para exibir a /admin_only página. Somente usuários com função PrivilegedAdmin de aplicativo podem exibir esta página. Caso contrário, uma mensagem de falha de autorização será exibida.
  8. Selecione Usuários regulares para exibir a /regular_user página. Somente usuários com função RegularUser de aplicativo ou PrivilegedAdmin podem exibir esta página. Caso contrário, uma mensagem de falha de autorização será exibida.
  9. Use o botão no canto para sair.

Observações sobre o código

Este exemplo usa o MSAL para Java (MSAL4J) para conectar um usuário e obter um token de ID que pode conter a declaração de funções. Com base na declaração de funções presentes, o usuário conectado pode acessar nenhuma, uma ou ambas as páginas Admins Only protegidas e Regular Users.

Se desejar replicar o comportamento deste exemplo, você poderá copiar o arquivo pom.xml e o conteúdo das pastas auxiliares e authservlets na pasta src/main/java/com/microsoft/azuresamples/msal4j. Você também precisa do arquivo authentication.properties . Essas classes e arquivos contêm código genérico que você pode usar em uma ampla variedade de aplicativos. Você também pode copiar o restante do exemplo, mas as outras classes e arquivos são criados especificamente para atender ao objetivo desse exemplo.

Contents

A tabela a seguir mostra o conteúdo da pasta de projeto de exemplo:

Arquivo/pasta Descrição
src/main/java/com/microsoft/azuresamples/msal4j/roles/ Esse diretório contém as classes que definem a lógica de negócios de back-end do aplicativo.
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ Esse diretório contém as classes usadas para pontos de extremidade de entrada e saída.
____Servlet.java Todos os pontos de extremidade disponíveis são definidos em classes .java terminadas em ____Servlet.java.
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ Classes auxiliares para autenticação.
AuthenticationFilter.java Redireciona solicitações não autenticadas para pontos de extremidade protegidos para uma página 401.
src/main/resources/authentication.properties ID do Microsoft Entra e configuração do programa.
src/main/webapp/ Este diretório contém os modelos UI - JSP
CHANGELOG.md Lista de alterações à amostra.
CONTRIBUTING.md Orientações para contribuição à amostra.
LICENÇA A licença para a amostra.

Processar uma declaração de funções no token de ID

A declaração de funções do token inclui os nomes das funções às quais o usuário conectado está atribuído, conforme mostrado no exemplo a seguir:

{
  ...
  "roles": [
    "Role1",
    "Role2",]
  ...
}

ConfidentialClientApplication

Uma ConfidentialClientApplication instância é criada no arquivo AuthHelper.java , conforme mostrado no exemplo a seguir. Esse objeto ajuda a criar a URL de autorização do Microsoft Entra e também ajuda a trocar o token de autenticação por um token de acesso.

// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
                     .builder(CLIENT_ID, secret)
                     .authority(AUTHORITY)
                     .build();

Os seguintes parâmetros são usados para instanciação:

  • A ID do cliente do aplicativo.
  • O segredo do cliente, que é um requisito para aplicativos cliente confidenciais.
  • A Autoridade de ID do Microsoft Entra, que inclui sua ID de locatário do Microsoft Entra.

Neste exemplo, esses valores são lidos do arquivo authentication.properties usando um leitor de propriedades no arquivo Config.java .

Orientação passo a passo

As etapas a seguir fornecem um passo a passo da funcionalidade do aplicativo:

  1. A primeira etapa do processo de entrada é enviar uma solicitação ao /authorize ponto de extremidade para seu locatário do Microsoft Entra ID. A instância MSAL4J ConfidentialClientApplication é usada para construir uma URL de solicitação de autorização. O aplicativo redireciona o navegador para essa URL, que é onde o usuário faz login.

    final ConfidentialClientApplication client = getConfidentialClientInstance();
    AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES))
            .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build();
    
    final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString();
    contextAdapter.redirectUser(authorizeUrl);
    

    A lista a seguir descreve os recursos desse código:

    • AuthorizationRequestUrlParameters: Parâmetros que devem ser definidos para criar um AuthorizationRequestUrl.
    • REDIRECT_URI: Onde o Microsoft Entra ID redireciona o navegador - junto com o código de autenticação - depois de coletar credenciais de usuário. Ele deve corresponder ao URI de redirecionamento no registro do aplicativo Microsoft Entra ID no portal do Azure.
    • SCOPES: Escopos são permissões solicitadas pelo aplicativo.
      • Normalmente, os três escopos são suficientes para receber uma resposta de token de openid profile offline_access ID.
      • A lista completa de escopos solicitados pelo aplicativo pode ser encontrada no arquivo authentication.properties . Você pode adicionar mais escopos, como User.Read.
  2. O usuário recebe um prompt de entrada do Microsoft Entra ID. Se a tentativa de entrada for bem-sucedida, o navegador do usuário será redirecionado para o ponto de extremidade de redirecionamento do aplicativo. Uma solicitação válida para esse ponto de extremidade contém um código de autorização.

  3. Em seguida, a ConfidentialClientApplication instância troca esse código de autorização por um token de ID e um token de acesso do Microsoft Entra ID.

    // First, validate the state, then parse any error codes in response, then extract the authCode. Then:
    // build the auth code params:
    final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
            .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build();
    
    // Get a client instance and leverage it to acquire the token:
    final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance();
    final IAuthenticationResult result = client.acquireToken(authParams).get();
    

    A lista a seguir descreve os recursos desse código:

    • AuthorizationCodeParameters: Parâmetros que devem ser definidos para trocar o Código de Autorização por um ID e/ou token de acesso.
    • authCode: O código de autorização que foi recebido no ponto de extremidade de redirecionamento.
    • REDIRECT_URI: O URI de redirecionamento usado na etapa anterior deve ser passado novamente.
    • SCOPES: Os escopos usados na etapa anterior devem ser passados novamente.
  4. Se acquireToken for bem-sucedido, as declarações de token serão extraídas. Se a verificação nonce passar, os resultados serão colocados em context - uma instância de IdentityContextData - e salvos na sessão. O aplicativo pode então instanciar o IdentityContextData da sessão por meio de uma instância de IdentityContextAdapterServlet sempre que precisar acessá-lo, conforme mostrado no código a seguir:

    // parse IdToken claims from the IAuthenticationResult:
    // (the next step - validateNonce - requires parsed claims)
    context.setIdTokenClaims(result.idToken());
    
    // if nonce is invalid, stop immediately! this could be a token replay!
    // if validation fails, throws exception and cancels auth:
    validateNonce(context);
    
    // set user to authenticated:
    context.setAuthResult(result, client.tokenCache().serialize());
    

Proteja as rotas

Para obter informações sobre como o aplicativo de exemplo filtra o acesso a rotas, consulte AuthenticationFilter.java. No arquivo authentication.properties, a app.protect.authenticated propriedade contém as rotas separadas por vírgulas que somente usuários autenticados podem acessar, conforme mostrado no exemplo a seguir:

# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details

Qualquer uma das rotas listadas nos conjuntos de regras separados por vírgulas sob o app.protect.roles também estão fora dos limites para usuários autenticados não autenticados, conforme mostrado no exemplo a seguir. No entanto, essas rotas também contêm uma lista separada por espaço de associações de função de aplicativo: somente os usuários que têm pelo menos uma das funções correspondentes podem acessar essas rotas após a autenticação.

# local short names for app roles - for example, sets admin to mean PrivilegedAdmin (useful for long rule sets defined in the next key, app.protect.roles)
app.roles=admin PrivilegedAdmin, user RegularUser

# A route and its corresponding <space-separated> role(s) that can access it; the start of the next route & its role(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by PrivilegedAdmin, /regular_user can be accessed by PrivilegedAdmin role and the RegularUser role
app.protect.roles=/admin_only admin, /regular_user admin user

Escopos

Os escopos informam ao Microsoft Entra ID o nível de acesso que o aplicativo está solicitando.

Com base nos escopos solicitados, a ID do Microsoft Entra apresenta uma caixa de diálogo de consentimento ao usuário ao entrar. Se o usuário consentir com um ou mais escopos e obtiver um token, os escopos consentidos serão codificados no .access_token

Para obter os escopos solicitados pelo aplicativo, consulte authentication.properties. Esses três escopos são solicitados pela MSAL e fornecidos pelo Microsoft Entra ID por padrão.

Mais informações