Snabbstart: Hämta en token och anropa Microsoft Graph API från en Java-konsolapp med hjälp av appens identitet
Välkommen! Det här är förmodligen inte den sida du förväntade dig. När vi arbetar med en korrigering bör den här länken ta dig till rätt artikel:
Snabbstart: Hämta en token och anropa Microsoft Graph från en Java-daemon-app
Vi ber om ursäkt för besväret och uppskattar ditt tålamod medan vi arbetar för att få detta löst.
I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur ett Java-program kan hämta en åtkomsttoken med hjälp av appens identitet för att anropa Microsoft Graph API och visa en lista över användare i katalogen. Kodexemplet visar hur ett obevakat jobb eller En Windows-tjänst kan köras med en programidentitet i stället för en användares identitet.
Förutsättningar
Om du vill köra det här exemplet behöver du:
- Java Development Kit (JDK) 8 eller senare
- Maven
Ladda ned och konfigurera snabbstartsappen
Steg 1: Konfigurera programmet i Azure Portal
För att kodexemplet för den här snabbstarten ska fungera måste du skapa en klienthemlighet och lägga till Graph-API:ts programbehörighet User.Read.All.
Programmet har konfigurerats med dessa attribut.
Steg 2: Ladda ned Java-projektet
Kommentar
Enter_the_Supported_Account_Info_Here
Steg 3: Administratörsmedgivande
Om du försöker köra programmet nu får du http 403 – förbjudet fel: Insufficient privileges to complete the operation
. Det här felet inträffar eftersom alla appbehörigheter kräver administratörsmedgivande: En molnprogramadministratör för din katalog måste ge sitt medgivande till ditt program. Välj något av alternativen nedan beroende på din roll:
Molnappadministratör
Om du är molnprogramadministratör för din klient går du till sidan API-behörigheter och väljer Bevilja administratörsmedgivande för Enter_the_Tenant_Name_Here.
Standardanvändare
Om du är en standardanvändare av din klientorganisation måste du be en molnprogramadministratör att bevilja administratörsmedgivande för ditt program. Gör detta genom att ge följande URL till administratören:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Steg 4: Kör programmet
Du kan testa exemplet direkt genom att köra huvudmetoden för ClientCredentialGrant.java från din IDE.
Från gränssnittet eller kommandoraden:
$ mvn clean compile assembly:single
Detta genererar en msal-client-credential-secret-1.0.0.jar fil i katalogen /targets. Kör detta med din körbara Java-fil som nedan:
$ java -jar msal-client-credential-secret-1.0.0.jar
När programmet har körts bör det visa listan över användare i den konfigurerade klientorganisationen.
Viktigt!
Det här snabbstartsprogrammet använder en klienthemlighet för att identifiera sig som en konfidentiell klient. Eftersom klienthemligheten läggs till som oformaterad text till dina projektfiler rekommenderar vi att du av säkerhetsskäl använder ett certifikat i stället för en klienthemlighet innan programmet används som produktionsprogram. Mer information om hur du använder ett certifikat finns i dessa instruktioner på samma GitHub-lagringsplats för det här exemplet, men i den andra mappen msal-client-credential-certificate.
Mer information
MSAL Java
MSAL Java är det bibliotek som används för att logga in användare och begära token som används för att komma åt ett API som skyddas av Microsofts identitetsplattform. Enligt beskrivningen begär den här snabbstarten token med hjälp av programmets egen identitet i stället för delegerade behörigheter. Autentiseringsflödet som används i det här fallet kallas för oauth-flöde för klientautentiseringsuppgifter. Mer information om hur du använder MSAL Java med daemon-appar finns i den här artikeln.
Lägg till MSAL4J i ditt program med hjälp av Maven eller Gradle för att hantera dina beroenden genom att göra följande ändringar i programmets pom.xml-fil (Maven) eller build.gradle-fil (Gradle).
I pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
I build.gradle:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
MSAL-initiering
Lägg till en referens till MSAL för Java genom att lägga till följande kod överst i filen där du ska använda MSAL4J:
import com.microsoft.aad.msal4j.*;
Initiera sedan MSAL med hjälp av följande kod:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication cca =
ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
Där: beskrivning CLIENT_SECRET
Skapas klienthemligheten för programmet i Azure Portal. CLIENT_ID
Är Program-ID (klient) för det program som registrerats på Azure-portalen. Du hittar det här värdet på appens översiktssida på Azure-portalen. AUTHORITY
STS-slutpunkten för autentisering av användaren. Vanligtvis https://login.microsoftonline.com/{tenant}
för offentligt moln, där {klient} är namnet på klientorganisationen eller klient-ID:t.
Begära token
Om du vill begära en token med appens identitet använder du metoden 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;
Där: beskrivning SCOPE
Innehåller omfattningarna som begärdes. För konfidentiella klienter bör detta använda formatet som liknar för att {Application ID URI}/.default
indikera att de omfång som begärs är de som statiskt definieras i appobjektet som anges i Azure Portal (för Microsoft Graph{Application ID URI}
pekar påhttps://graph.microsoft.com
). För anpassade webb-API:er{Application ID URI}
definieras under avsnittet Exponera ett API i Appregistreringar i Azure Portal.
Hjälp och support
Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.
Nästa steg
Mer information om daemonprogram finns på landningssidan för scenariot.