Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Seja bem-vindo! Essa provavelmente não é a página que você esperava. Enquanto trabalhamos em uma correção, este link direcionará você para o artigo certo:
Início Rápido: Adquirir um token e chamar o Microsoft Graph de um aplicativo daemon Java
Pedimos desculpas pela inconveniência e agradecemos sua paciência enquanto trabalhamos para resolver isso.
Neste guia de início rápido, você baixará e executará um exemplo de código que demonstra como um aplicativo Java pode obter um token de acesso usando a identidade do aplicativo para chamar a API do Microsoft Graph e exibir uma lista de usuários no diretório. O exemplo de código demonstra como um trabalho autônomo ou um serviço Windows pode ser executado com uma identidade de aplicativo, em vez de uma identidade do usuário.
Pré-requisitos
Para executar este exemplo, você precisa de:
- JDK (Java Development Kit) 8 ou posterior
- Especialista
Baixar e configurar o aplicativo de início rápido
Etapa 1: Configurar o aplicativo no portal do Azure
Para que o exemplo de código deste início rápido funcione, você precisa criar um segredo do cliente e adicionar a permissão de aplicativo User.Read.All da API do Graph.
Esses atributos já estão configurados no seu aplicativo.
Etapa 2: Baixar o projeto Java
Observação
Enter_the_Supported_Account_Info_Here
Etapa 3: Consentimento do administrador
Se você tentar executar o aplicativo neste ponto, receberá o erro HTTP 403 – Proibido: Insufficient privileges to complete the operation. Esse erro ocorre porque qualquer permissão somente de aplicativo requer consentimento do administrador: um administrador de aplicativos em nuvem do seu diretório deve dar consentimento ao seu aplicativo. Selecione uma das opções abaixo, dependendo de sua função:
Administrador de Aplicativos de Nuvem
Se você for um administrador de aplicativos em nuvem do seu locatário, vá para a página Permissões de API e selecione Conceder consentimento do administrador para Enter_the_Tenant_Name_Here.
Usuário padrão
Se você for um usuário padrão do seu locatário, precisará solicitar a um administrador de aplicativos em nuvem que conceda consentimento administrativo para seu aplicativo. Para fazer isso, dê a seguinte URL ao administrador:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Etapa 4: Executar o aplicativo
Teste o exemplo diretamente executando o método principal de ClientCredentialGrant.java no IDE.
No shell ou na linha de comando:
$ mvn clean compile assembly:single
Isso vai gerar um arquivo msal-client-credential-secret-1.0.0.jar no diretório /targets. Execute-o usando o executável Java, conforme mostrado abaixo:
$ java -jar msal-client-credential-secret-1.0.0.jar
Após a execução, o aplicativo exibirá a lista de usuários no locatário configurado.
Importante
Este aplicativo de início rápido usa um segredo do cliente para se identificar como cliente confidencial. Como o segredo do cliente é adicionado como texto sem formatação a seus arquivos de projeto, por motivos de segurança, é recomendável que você use um certificado, em vez de um segredo do cliente, antes de considerar o aplicativo como aplicativo de produção. Para obter mais informações sobre como usar um certificado, confira estas instruções no mesmo repositório GitHub deste exemplo, mas na segunda pasta msal-client-credential-certificate.
Mais informações
MSAL Java
MSAL Java é a biblioteca usada para conectar usuários e solicitar tokens usados para acessar uma API protegida pela plataforma de identidade da Microsoft. Conforme descrito, este início rápido solicita tokens usando a identidade do próprio aplicativo, em vez de permissões delegadas. O fluxo de autenticação usado nesse caso é conhecido como fluxo OAuth de credenciais do cliente . Para obter mais informações sobre como usar a MSAL Java com aplicativos daemon, confira este artigo.
Adicione a MSAL4J ao seu aplicativo usando o Maven ou o Gradle para gerenciar as dependências fazendo as alterações a seguir no arquivo pom.xml (Maven) ou build.gradle (Gradle) do aplicativo.
No pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
No build.gradle:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
Inicialização da MSAL
Adicione uma referência à MSAL para Java incluindo o seguinte código ao início do arquivo no qual você usará a MSAL4J:
import com.microsoft.aad.msal4j.*;
Em seguida, inicialize a MSAL usando o seguinte código:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication cca =
ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
Em que: Descrição CLIENT_SECRETÉ o segredo do cliente criado para o aplicativo no portal do Azure. CLIENT_IDÉ a ID do aplicativo (cliente) relativa ao aplicativo registrado no portal do Azure. Você pode encontrar esse valor na página Visão Geral do aplicativo no portal do Azure. AUTHORITYO ponto de extremidade do STS para o usuário autenticar. Normalmente, https://login.microsoftonline.com/{tenant}para a nuvem pública, em que {tenant} é o nome do seu locatário ou ID do seu locatário.
Solicitando tokens
Para solicitar um token usando a identidade do aplicativo, use o método acquireToken:
IAuthenticationResult result;
try {
SilentParameters silentParameters =
SilentParameters
.builder(SCOPE)
.build();
// try to acquire token silently. This call will fail since the token cache does not
// have a token for the application you are requesting an access token for
result = cca.acquireTokenSilently(silentParameters).join();
} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
ClientCredentialParameters parameters =
ClientCredentialParameters
.builder(SCOPE)
.build();
// Try to acquire a token. If successful, you should see
// the token information printed out to console
result = cca.acquireToken(parameters).join();
} else {
// Handle other exceptions accordingly
throw ex;
}
}
return result;
Em que: Descrição SCOPEContém os escopos solicitados. Para clientes confidenciais, ele deve usar um formato semelhante a {Application ID URI}/.defaultpara indicar que os escopos solicitados são os estaticamente definidos no objeto de aplicativo definido no portal do Azure (no caso do Microsoft Graph,{Application ID URI}aponta parahttps://graph.microsoft.com). Para APIs Web personalizadas,{Application ID URI}é definido na seção Expor uma API em Registros de aplicativo no portal do Azure.
Ajuda e suporte
Se precisar de ajuda, quiser relatar um problema ou desejar saber mais sobre as opções de suporte, confira Ajuda e suporte para desenvolvedores.
Próximas etapas
Para saber mais sobre os aplicativos daemon, consulte a página de aterrissagem do cenário.