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.
Wymagania wstępne
Aby uruchomić ten przykład, potrzebne są następujące elementy:
- Zestaw Java Development Kit (JDK) 8 lub nowszy
- Maven
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:
- Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.
- Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
- Przejdź do sekcji Identity Applications Application registrations (Rejestracje aplikacji>tożsamości).>
- Wybierz opcjęNowa rejestracja.
- Wprowadź nazwę aplikacji, na przykład
Daemon-console
. Użytkownicy aplikacji mogą zobaczyć tę nazwę i możesz ją zmienić później. - Wybierz pozycję Zarejestruj.
- W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne.
- 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.
- W obszarze Zarządzanie wybierz pozycję Uprawnienia>interfejsu API Dodaj uprawnienie. Wybierz pozycję Microsoft Graph.
- Wybierz Uprawnienia aplikacji.
- 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
- Wyodrębnij plik zip do folderu lokalnego w pobliżu katalogu głównego dysku, takiego jak
C:\Azure-Samples
. - Przejdź do podfolderu
msal-client-credential-secret
. - Edytuj
src\main\resources\application.properties
i zastąp wartości pólAUTHORITY
,CLIENT_ID
iSECRET
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.
Krok 4. Zgoda administratora
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 zgody administratora: administrator globalny katalogu musi wyrazić zgodę na twoją 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 globalnego 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.