Szybki start: uzyskiwanie tokenu i wywoływanie interfejsu API programu Microsoft Graph z poziomu aplikacji konsolowej Java przy użyciu tożsamości aplikacji
Witamy! Prawdopodobnie nie jest to oczekiwana strona. Chociaż pracujemy nad poprawką, ten link powinien podjąć Cię do odpowiedniego artykułu:
Przepraszamy za niedogodności i doceniamy cierpliwość, podczas gdy pracujemy nad rozwiązaniem tego problemu.
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
Pobieranie i konfigurowanie aplikacji Szybki start
Krok 1. Konfigurowanie aplikacji w witrynie Azure Portal
Aby działał przykładowy kod z tego przewodnika Szybki start, musisz utworzyć klucz tajny klienta i dodać uprawnienie aplikacji User.Read.All interfejsu API programu Graph.
Aplikacja jest skonfigurowana przy użyciu tych atrybutów.
Krok 2. Pobieranie projektu Java
Uwaga
Enter_the_Supported_Account_Info_Here
Krok 3. 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 aplikacji w chmurze katalogu musi wyrazić zgodę na twoją aplikację. Wybierz jedną z poniższych opcji w zależności od twojej roli:
Administrator aplikacji w chmurze
Jeśli jesteś administratorem aplikacji w chmurze dzierżawy, przejdź do strony Uprawnienia interfejsu API wybierz pozycję Udziel zgody administratora dla Enter_the_Tenant_Name_Here.
Użytkownik standardowy
Jeśli jesteś użytkownikiem standardowym dzierżawy, musisz poprosić administratora aplikacji w chmurze o udzielenie zgody administratora aplikacji 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
Krok 4. Uruchamianie 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 pliku msal-client-credential-secret-1.0.0.jar w katalogu /targets. 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 w witrynie Azure Portal. CLIENT_ID
Jest identyfikatorem aplikacji (klienta) dla aplikacji zarejestrowanej w witrynie Azure Portal. Tę wartość można znaleźć na stronie Przegląd aplikacji w witrynie Azure Portal. AUTHORITY
Punkt końcowy usługi STS na potrzeby uwierzytelnienia użytkownika. W chmurze publicznej jest to zwykle https://login.microsoftonline.com/{tenant}
, 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, że żądane zakresy są statycznie zdefiniowane w obiekcie aplikacji ustawionym w witrynie Azure Portal (w przypadku programu Microsoft Graph{Application ID URI}
wskazuje wartośćhttps://graph.microsoft.com
). W przypadku niestandardowych internetowych interfejsów{Application ID URI}
API jest definiowana w sekcji Uwidacznij interfejs API w Rejestracje aplikacji w witrynie Azure Portal.
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.