Rychlý start: Získání tokenu a volání Microsoft Graphu z aplikace démon Java
V tomto rychlém startu stáhnete a spustíte ukázku kódu, která ukazuje, jak aplikace v Javě může získat přístupový token pomocí identity aplikace k volání rozhraní Microsoft Graph API a zobrazení seznamu uživatelů v adresáři. Ukázka kódu ukazuje, jak může bezobslužná úloha nebo služba Systému Windows běžet s identitou aplikace místo identity uživatele.
Požadavky
Ke spuštění této ukázky potřebujete:
- Java Development Kit (JDK) 8 nebo novější
- Maven
Registrace a stažení aplikace pro rychlý start
Tip
Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.
Krok 1: Registrace aplikace
Pokud chcete zaregistrovat aplikaci a ručně přidat informace o registraci aplikace ke svému řešení, postupujte následovně:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
- Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.
- Přejděte k registracím> aplikací identit.>
- Vyberte Nová registrace.
- Zadejte název aplikace, například
Daemon-console
. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit. - Vyberte Zaregistrovat.
- V části Spravovat vyberte Certifikáty a tajné kódy.
- V části Tajné kódy klienta vyberte Nový tajný klíč klienta, zadejte název a pak vyberte Přidat. Poznamenejte si hodnotu tajného kódu v bezpečném umístění pro použití v pozdějším kroku.
- V části Spravovat vyberte Oprávnění>rozhraní API Přidat oprávnění. Vyberte Microsoft Graph.
- Vyberte Oprávnění aplikace.
- V části Uzel uživatele vyberte User.Read.All a pak vyberte Přidat oprávnění.
Krok 2: Stažení projektu Java
Stažení projektu démona v Javě
Krok 3: Konfigurace projektu Java
- Extrahujte soubor ZIP do místní složky blízko kořenového adresáře disku, například
C:\Azure-Samples
. - Přejděte do
msal-client-credential-secret
podsložky. - Upravte a nahraďte
src\main\resources\application.properties
hodnoty políAUTHORITY
CLIENT_ID
aSECRET
následujícím fragmentem kódu:
AUTHORITY=https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/
CLIENT_ID=Enter_the_Application_Id_Here
SECRET=Enter_the_Client_Secret_Here
Kde:
- Hodnota
Enter_the_Application_Id_Here
je ID aplikace (klienta), kterou jste zaregistrovali. Enter_the_Tenant_Id_Here
– tuto hodnotu nahraďte ID tenanta nebo názvem tenanta (například contoso.microsoft.com).Enter_the_Client_Secret_Here
– tuto hodnotu nahraďte tajným kódem klienta vytvořeným v kroku 1.
Tip
Pokud chcete najít hodnoty ID aplikace (klienta), ID adresáře (tenanta), přejděte na stránku Přehled aplikace. Pokud chcete vygenerovat nový klíč, přejděte na stránku Certifikáty a tajné kódy .
Krok 4: Souhlas správce
Pokud se v tomto okamžiku pokusíte spustit aplikaci, zobrazí se chyba HTTP 403 – Zakázáno : Insufficient privileges to complete the operation
. K této chybě dochází, protože jakékoli oprávnění jen pro aplikaci vyžaduje souhlas správce: Globální správce vašeho adresáře musí udělit souhlas s vaší aplikací. V závislosti na vaší roli vyberte jednu z následujících možností:
Globální správce tenanta
Pokud jste globální správce tenanta, přejděte na stránku Oprávnění rozhraní API v Registrace aplikací a vyberte Udělit souhlas správce pro {Název tenanta} (Kde {Název tenanta} je název vašeho adresáře).
Standardní uživatel
Pokud jste standardním uživatelem tenanta, musíte požádat globálního správce o udělení souhlasu správce pro vaši aplikaci. Chcete-li to provést, dejte správci následující adresu URL:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Kde:
Enter_the_Tenant_Id_Here
– tuto hodnotu nahraďte ID tenanta nebo názvem tenanta (například contoso.microsoft.com).- Hodnota
Enter_the_Application_Id_Here
je ID aplikace (klienta), kterou jste zaregistrovali.
Krok 5: Spuštění aplikace
Ukázku můžete otestovat přímo spuštěním hlavní metody ClientCredentialGrant.java z integrovaného vývojového prostředí ( IDE).
Z prostředí nebo příkazového řádku:
$ mvn clean compile assembly:single
Tím se vygeneruje msal-client-credential-secret-1.0.0.jar
soubor ve vašem /targets
adresáři. Spusťte tento příkaz pomocí spustitelného souboru Java, jak je znázorněno níže:
$ java -jar msal-client-credential-secret-1.0.0.jar
Po spuštění by aplikace měla zobrazit seznam uživatelů v nakonfigurovaném tenantovi.
Důležité
Tato aplikace pro rychlý start používá tajný klíč klienta k identifikaci samotného jako důvěrného klienta. Vzhledem k tomu, že tajný klíč klienta se do souborů projektu přidá jako prostý text, z bezpečnostních důvodů se doporučuje místo tajného klíče klienta použít certifikát před zvážením aplikace jako produkční aplikace. Další informace o použití certifikátu najdete v těchto pokynech ve stejném úložišti GitHub pro tuto ukázku, ale ve druhé složce MSAL-client-credential-certificate.
Více informací
MSAL v Javě
MSAL Java je knihovna používaná k přihlášení uživatelů a vyžádání tokenů používaných pro přístup k rozhraní API chráněnému platformou Microsoft Identity Platform. Jak je popsáno, tento rychlý start vyžaduje tokeny pomocí vlastní identity aplikace místo delegovaných oprávnění. Tok ověřování použitý v tomto případě se označuje jako tok ověření přihlašovacích údajů klienta. Další informace o tom, jak používat JAZYK MSAL Java s aplikacemi démonů, najdete v tomto článku.
Přidejte do aplikace MSAL4J pomocí Mavenu nebo Gradle ke správě závislostí provedením následujících změn v souboru pom.xml aplikace (Maven) nebo build.gradle (Gradle).
V pom.xml:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
V build.gradle:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
Inicializace knihovny MSAL
Přidejte odkaz na MSAL pro Javu přidáním následujícího kódu na začátek souboru, kde budete používat MSAL4J:
import com.microsoft.aad.msal4j.*;
Potom inicializujte knihovnu MSAL pomocí následujícího kódu:
IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication cca =
ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();
Kde: | Popis |
---|---|
CLIENT_SECRET |
Je tajný klíč klienta vytvořený pro aplikaci. |
CLIENT_ID |
Je ID aplikace (klienta) registrované aplikace. Tuto hodnotu najdete na stránce Přehled aplikace. |
AUTHORITY |
Koncový bod služby tokenů zabezpečení pro uživatele k ověření, Obvykle https://login.microsoftonline.com/{tenant} pro veřejný cloud, kde {tenant} je název vašeho tenanta nebo ID tenanta. |
Žádosti o tokeny
Pokud chcete požádat o token pomocí identity aplikace, použijte acquireToken
metodu:
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;
Kde: | Popis |
---|---|
SCOPE |
Obsahuje požadované obory. U důvěrných klientů by se měl použít formát podobný {Application ID URI}/.default označení, že požadované obory jsou ty, které jsou staticky definované v objektu aplikace (pro Microsoft Graph, {Application ID URI} odkazuje na https://graph.microsoft.com ). Pro vlastní webová rozhraní API {Application ID URI} je definována v části Vystavení rozhraní API v Registrace aplikací. |
Nápověda a podpora
Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.
Další kroky
Další informace o aplikacích démona najdete na cílové stránce scénáře.