Conectar usuários com a Biblioteca de Autenticação da Microsoft

Concluído

Você registrou seu aplicativo web no Microsoft Entra ID. Você agora está pronto para adicionar o código de autenticação ao login de usuários no seu aplicativo e gostaria de usar um SDK que possa se encarregar dos detalhes da autenticação para você. Nesta unidade, você aprenderá sobre a MSAL4J (Biblioteca de Autenticação da Microsoft para Java) e como ela ajuda na autenticação.

Biblioteca de Autenticação da Microsoft para Java

A Biblioteca de Autenticação da Microsoft para Java (MSAL4J) permite que os aplicativos façam o login de usuários ou aplicativos usando identidades da Microsoft (Microsoft Entra ID, contas Microsoft e contas do Azure Active Directory B2C) e obtenham tokens para chamar APIs da Microsoft ou suas próprias APIs registradas no Microsoft Entra ID. Foi compilada usando os protocolos OAuth2 e OpenID Connect que são padrão do setor.

A biblioteca fornece APIs convenientes que habilitam a autenticação com o Microsoft Entra ID para diferentes tipos de aplicativos:

  • Aplicativos Web
  • Serviços de daemon
  • Aplicativos de linha de comando
  • Aplicativos da área de trabalho

Inicializar o objeto da MSAL

Para começar a usar a MSAL, você precisa inicializar e configurar o objeto MSAL no código do aplicativo.

A MSAL representa aplicativos cliente como clientes públicos e clientes confidenciais, diferenciados pela capacidade de autenticar de modo seguro no servidor de autorização e manter a confidencialidade das credenciais do cliente.

Aplicativos cliente confidenciais são executados em servidores (aplicativos Web, aplicativos de API Web ou até mesmo aplicativos de serviço/daemon). Clientes confidenciais podem conter segredos de aplicativo em tempo de configuração.

Você pode criar uma instância do cliente Confidencial da seguinte maneira:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID: A ID do cliente é a ID do aplicativo (cliente) exclusiva atribuída ao seu aplicativo pelo Microsoft Entra ID quando o aplicativo foi registrado.
  • CLIENT_SECRET: o segredo do cliente do aplicativo cliente confidencial, criado ao registrar o aplicativo.
  • AUTHORITY: a autoridade é uma URL que indica um diretório do qual a MSAL pode solicitar tokens. É composta da instância do provedor de identidade e do público-alvo do login no aplicativo.

Adquirir tokens de autenticação com a MSAL

A MSAL fornece métodos acquireToken para iniciar o fluxo de autenticação e retornar um AuthenticationResult que contém os tokens de autenticação.

Quando um usuário faz o login, um token de ID é retornado no resultado da autenticação contendo algumas declarações de autenticação básicas, como nome UPN, email etc.

Veja um exemplo de como adquirir tokens com a MSAL:

final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                    .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                    .build();

final IAuthenticationResult result = app.acquireToken(authParams).get();
  • REDIRECT_URI: O URI de redirecionamento é o URI para o qual o provedor de identidade envia os tokens de segurança de volta. Ele deve corresponder ao URI de redirecionamento no registro do aplicativo do Microsoft Entra.
  • SCOPES: Escopos são as permissões solicitadas pelo aplicativo. Normalmente, os três escopos openid profile offline_access são suficientes para receber uma resposta do token de ID para uma conexão de usuário e são definidos por padrão pela MSAL.

Use os métodos acquireToken no aplicativo quando iniciar um fluxo de login para os usuários e ao chamar APIs para acessar dados.