Szybki start: uzyskiwanie tokenu i wywoływanie programu Microsoft Graph z poziomu aplikacji demona Java

W tym przewodniku Szybki start pobierzesz i uruchomisz przykładowy kod, który pokazuje, jak aplikacja Java może uzyskać token dostępu przy użyciu tożsamości aplikacji w celu wywołania interfejsu API programu Microsoft Graph i wyświetlenia listy użytkowników w katalogu. Przykładowy kod przedstawia sposób uruchamiania zadania nienadzorowanego lub usługi systemu Windows przy użyciu tożsamości aplikacji zamiast tożsamości użytkownika.

Diagram showing how the sample app generated by this quickstart works.

Wymagania wstępne

Aby uruchomić ten przykład, potrzebne są następujące elementy:

Rejestrowanie i pobieranie aplikacji Szybki start

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

Krok 1. Rejestrowanie aplikacji

Aby ręcznie zarejestrować aplikację i dodać informacje na temat rejestracji aplikacji do rozwiązania, wykonaj następujące czynności:

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.
  2. Jeśli masz dostęp do wielu dzierżaw, użyj ikonyUstawienia w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
  3. Przejdź do sekcji Identity Applications Application registrations (Rejestracje aplikacji>tożsamości).>
  4. Wybierz opcjęNowa rejestracja.
  5. Wprowadź nazwę aplikacji, na przykład Daemon-console. Użytkownicy aplikacji mogą zobaczyć tę nazwę i możesz ją zmienić później.
  6. Wybierz pozycję Zarejestruj.
  7. W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne.
  8. W obszarze Wpisy tajne klienta wybierz pozycję Nowy klucz tajny klienta, wprowadź nazwę, a następnie wybierz pozycję Dodaj. Zarejestruj wartość wpisu tajnego w bezpiecznej lokalizacji do użycia w późniejszym kroku.
  9. W obszarze Zarządzanie wybierz pozycję Uprawnienia>interfejsu API Dodaj uprawnienie. Wybierz pozycję Microsoft Graph.
  10. Wybierz Uprawnienia aplikacji.
  11. W węźle Użytkownik wybierz pozycję User.Read.All, a następnie wybierz pozycję Dodaj uprawnienia.

Krok 2. Pobieranie projektu Java

Pobieranie projektu demona Java

Krok 3. Konfigurowanie projektu Java

  1. Wyodrębnij plik zip do folderu lokalnego w pobliżu katalogu głównego dysku, takiego jak C:\Azure-Samples.
  2. Przejdź do podfolderu msal-client-credential-secret .
  3. Edytuj src\main\resources\application.properties i zastąp wartości pól AUTHORITY, CLIENT_IDi SECRET następującym fragmentem kodu:
  AUTHORITY=https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/
  CLIENT_ID=Enter_the_Application_Id_Here
  SECRET=Enter_the_Client_Secret_Here

Gdzie:

  • Enter_the_Application_Id_Here jest identyfikatorem aplikacji (klienta) dla zarejestrowanej aplikacji.
  • Enter_the_Tenant_Id_Here— zastąp tę wartość identyfikatorem dzierżawy lub nazwą dzierżawy (na przykład contoso.microsoft.com).
  • Enter_the_Client_Secret_Here — zastąp tę wartość kluczem tajnym klienta utworzonym w kroku 1.

Napiwek

Aby znaleźć wartości identyfikatora aplikacji (klienta), identyfikator katalogu (dzierżawy), przejdź do strony Przegląd aplikacji. Aby wygenerować nowy klucz, przejdź do strony Certyfikaty i klucze tajne.

Jeśli spróbujesz uruchomić aplikację w tym momencie, zostanie wyświetlony błąd HTTP 403 — Zabronione : Insufficient privileges to complete the operation. Ten błąd występuje, ponieważ każde uprawnienie tylko do aplikacji wymaga Administracja zgody: globalny Administracja istrator katalogu musi wyrazić zgodę na aplikację. Wybierz jedną z poniższych opcji w zależności od twojej roli:

Administrator globalny dzierżawy

Jeśli jesteś administratorem dzierżawy globalnej, przejdź do strony Uprawnienia interfejsu API w Rejestracje aplikacji i wybierz pozycję Udziel zgody administratora dla {Nazwa dzierżawy} (Gdzie {Nazwa dzierżawy} jest nazwą katalogu).

Użytkownik standardowy

Jeśli jesteś użytkownikiem standardowym dzierżawy, musisz poprosić administratora Administracja istrator globalny o udzielenie zgody administratora dla aplikacji. Aby to zrobić, udostępnij administratorowi następujący adres URL:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Gdzie:

  • Enter_the_Tenant_Id_Here — zastąp tę wartość wartością Identyfikator dzierżawy lub Nazwa dzierżawy (na przykład contoso.microsoft.com)
  • Enter_the_Application_Id_Here jest identyfikatorem aplikacji (klienta) dla zarejestrowanej aplikacji.

Krok 5. Uruchomienie aplikacji

Przykład można przetestować bezpośrednio, uruchamiając główną metodę ClientCredentialGrant.java z poziomu środowiska IDE.

Z powłoki lub wiersza polecenia:

$ mvn clean compile assembly:single

Spowoduje to wygenerowanie msal-client-credential-secret-1.0.0.jar pliku w /targets katalogu. Uruchom to przy użyciu pliku wykonywalnego Java, jak pokazano poniżej:

$ java -jar msal-client-credential-secret-1.0.0.jar

Po uruchomieniu aplikacja powinna wyświetlić listę użytkowników w skonfigurowanej dzierżawie.

Ważne

Aplikacja w tym przewodniku Szybki start używa klucza tajnego klienta do identyfikowania się jako klienta poufnego. Ponieważ klucz tajny klienta jest dodawany jako zwykły tekst w plikach projektu, ze względów bezpieczeństwa zaleca się używanie certyfikatu zamiast klucza tajnego klienta, zanim będzie można uznać aplikację za produkcyjną. Aby uzyskać więcej informacji na temat używania certyfikatu, zobacz te instrukcje w tym samym repozytorium GitHub dla tego przykładu, ale w drugim folderze MSAL-client-credential-certificate.

Więcej informacji

MSAL Java

Biblioteka MSAL Java to biblioteka używana do logowania użytkowników i żądania tokenów używanych do uzyskiwania dostępu do interfejsu API chronionego przez Platforma tożsamości Microsoft. Zgodnie z opisem ten przewodnik Szybki start żąda tokenów przy użyciu własnej tożsamości aplikacji zamiast uprawnień delegowanych. W tym przypadku przepływ uwierzytelniania jest określany jako przepływ OAuth poświadczeń klienta. Aby uzyskać więcej informacji na temat używania biblioteki MSAL Java z aplikacjami demona, zobacz ten artykuł.

Dodaj bibliotekę MSAL4J do aplikacji przy użyciu narzędzia Maven lub narzędzia Gradle, aby zarządzać zależnościami, wprowadzając następujące zmiany w pliku pom.xml aplikacji (Maven) lub build.gradle (Gradle).

W pom.xml:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.0.0</version>
</dependency>

W pliku build.gradle:

compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'

Inicjowanie biblioteki MSAL

Dodaj odwołanie do biblioteki MSAL dla języka Java, dodając następujący kod na początku pliku, w którym będziesz używać biblioteki MSAL4J:

import com.microsoft.aad.msal4j.*;

Następnie zainicjuj bibliotekę MSAL, używając następującego kodu:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);

ConfidentialClientApplication cca =
        ConfidentialClientApplication
                .builder(CLIENT_ID, credential)
                .authority(AUTHORITY)
                .build();
Gdzie: opis
CLIENT_SECRET Czy klucz tajny klienta jest tworzony dla aplikacji.
CLIENT_ID To identyfikator aplikacji (klienta) zarejestrowanej aplikacji. Tę wartość można znaleźć na stronie Przegląd aplikacji.
AUTHORITY Punkt końcowy usługi STS na potrzeby uwierzytelnienia użytkownika. Zwykle https://login.microsoftonline.com/{tenant} w przypadku chmury publicznej, gdzie {tenant} jest nazwą dzierżawy lub identyfikatorem dzierżawy.

Przesyłanie żądań tokenów

Aby zażądać tokenu przy użyciu tożsamości aplikacji, należy użyć metody 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;
Gdzie: opis
SCOPE Zawiera żądane zakresy. W przypadku klientów poufnych należy użyć formatu podobnego do {Application ID URI}/.default wskazującego, {Application ID URI} że żądane zakresy są statycznie zdefiniowane w obiekcie aplikacji (w przypadku programu Microsoft Graph wskazuje wartość https://graph.microsoft.com). W przypadku niestandardowych internetowych interfejsów {Application ID URI} API jest definiowana w sekcji Uwidaczniaj interfejs API w Rejestracje aplikacji.

Pomoc i obsługa techniczna 

Jeśli potrzebujesz pomocy, chcesz zgłosić problem lub poznać opcje pomocy technicznej, zobacz Pomoc i obsługa techniczna dla deweloperów.

Następne kroki

Aby dowiedzieć się więcej na temat aplikacji demona, zobacz stronę docelową scenariusza.