Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Najemcy pracowniczy
Najemcy zewnętrzni (dowiedz się więcej)
Ten samouczek jest ostatnią częścią serii samouczków, która demonstruje tworzenie aplikacji interfejsu wiersza polecenia (CLI) Node.js i przygotowanie jej do uwierzytelniania przy użyciu centrum administracyjnego firmy Microsoft Entra. W części 1 tej serii utworzono aplikację interfejsu wiersza polecenia Node.js i przygotowano ją do uwierzytelniania. Ten samouczek pokazuje, jak uwierzytelnić użytkowników w aplikacji CLI Node.js, którą stworzyłeś.
- Importowanie wymaganych modułów i konfiguracji biblioteki MSAL
- Utwórz wystąpienie publicznej aplikacji klienckiej
- Uruchamianie okna przeglądarki na potrzeby interakcji użytkownika
- Tworzenie obiektu żądania tokenu
- Definiowanie funkcji do uzyskiwania tokenów
- Inicjowanie przepływu uwierzytelniania
- Skonfiguruj aplikację CLI Node.js
- Uruchom i przetestuj aplikację CLI Node.js
Zaimportuj MSAL i konfigurację
Aplikacja CLI, którą tworzymy, korzysta z biblioteki Microsoft Authentication Library for Node do uwierzytelniania użytkowników. Aby zaimportować pakiet MSAL Node
oraz konfiguracje msalConfig
i loginRequest
zdefiniowane w poprzednim samouczku, dodaj następujący kod do index.js:
const { PublicClientApplication, InteractionRequiredAuthError } = require('@azure/msal-node');
const open = require('open');
const { msalConfig, loginRequest } = require('./authConfig');
W tym fragmencie kodu zaimportujesz klasy PublicClientApplication
i InteractionRequiredAuthError
z pakietu @azure/msal-node
. Zaimportujesz również pakiet open
, który umożliwia aplikacji otwieranie okna przeglądarki na potrzeby interakcji użytkownika.
Tworzenie wystąpienia obiektu PublicClientApplication
Aby użyć MSAL Node, należy najpierw utworzyć instancję obiektu PublicClientApplication
przy użyciu obiektu msalConfig
. Zainicjowany obiekt PublicClientApplication
służy do uwierzytelniania użytkownika i uzyskiwania tokenu dostępu.
W index.jsdodaj następujący kod, aby zainicjować publiczną aplikację kliencą:
const pca = new PublicClientApplication(msalConfig);
Uruchamianie okna przeglądarki na potrzeby interakcji użytkownika
Aby użytkownicy mogli się zalogować i wyrazić zgodę na wymagane przez aplikację zakresy, zdefiniuj funkcję openBrowser
, która otwiera okno przeglądarki na potrzeby interakcji użytkownika, jak pokazano:
const openBrowser = async (url) => {
open(url);
};
Tworzenie obiektu żądania tokenu
Następnie utwórz obiekt tokenRequest
, łącząc właściwości z loginRequest
(zaimportowanego z authConfig.js) z funkcją openBrowser
, dodając następujący kod do index.js:
const tokenRequest = {
...loginRequest,
openBrowser,
successTemplate: '<h1>Successfully signed in!</h1> <p>You can close this window now.</p>',
errorTemplate:
'<h1>Oops! Something went wrong</h1> <p>Navigate back to the Electron application and check the console for more information.</p>',
};
successTemplate
i errorTemplate
to szablony HTML używane do wyświetlania komunikatów po uwierzytelnieniu.
Definiowanie funkcji do uzyskiwania tokenów
Aby utworzyć funkcję acquireToken
, której aplikacja używa do uzyskania tokenu dostępu dla użytkownika, dodaj następujący kod do index.js.
const acquireToken = async () => {
const accounts = await pca.getTokenCache().getAllAccounts();
if (accounts.length === 1) {
// Try to acquire token silently for the single account.
// If silent acquisition fails, use interactive authentication.
const silentRequest = {
account: accounts[0],
};
return pca.acquireTokenSilent(silentRequest).catch((e) => {
if (e instanceof InteractionRequiredAuthError) {
return pca.acquireTokenInteractive(tokenRequest);
}
});
} else if (accounts.length > 1) {
// Multiple accounts found. Prompt the user to select an account.
accounts.forEach((account) => {
console.log(account.username);
});
return Promise.reject('Multiple accounts found. Please select an account to use.');
} else {
// No account found. Use interactive authentication.
return pca.acquireTokenInteractive(tokenRequest);
}
};
W tym fragmencie kodu funkcja acquireToken
próbuje uzyskać token dostępu dla pojedynczego konta w trybie dyskretnym; Jeśli wystąpi błąd, używa uwierzytelniania interakcyjnego. Jeśli zostanie znalezionych wiele kont, zostanie wyświetlony monit o wybranie konta, a jeśli żadne konto nie zostanie znalezione, inicjuje uwierzytelnianie interakcyjne w celu monitowania użytkownika o zalogowanie się i zgodę.
Inicjowanie przepływu uwierzytelniania
Na koniec wywołaj acquireToken()
funkcję , aby zainicjować przepływ uwierzytelniania, dodając następujący kod do index.js:
acquireToken()
.then((response) => {
console.log(response);
})
.catch((e) => {
console.error(e);
process.exit(1);
});
Jeśli wywołanie acquireToken()
zakończy się pomyślnie, odpowiedź zawierająca token dostępu jest rejestrowana w konsoli programu . Jeśli podczas uwierzytelniania wystąpi błąd, zostanie zarejestrowany błąd, a proces zakończy działanie z kodem błędu.
Uruchom i przetestuj przykładową aplikację CLI Node.js
Aby uruchomić i przetestować aplikację wiersza poleceń Node.js, upewnij się, że zamieniłeś wartości zastępcze w pliku authConfig.js na dane rejestracyjne aplikacji Microsoft Entra. Teraz możesz przetestować utworzoną aplikację, wykonując następujące kroki:
W terminalu uruchom następujące polecenie:
cd 1-Authentication\6-sign-in-node-cli-app\App npm start
Przeglądarka zostanie otwarta automatycznie i powinna zostać wyświetlona strona podobna do następującej:
Na stronie logowania wpisz adres e-mail . Jeśli nie masz konta, wybierz pozycję Nie masz konta? Utwórz jeden, który uruchamia przepływ rejestracji.
Jeśli wybierzesz opcję rejestracji, po wypełnieniu adresu e-mail, jednorazowego kodu dostępu, nowego hasła i dodatkowych szczegółów konta, ukończ cały przepływ rejestracji. Po ukończeniu przepływu rejestracji i logowania zostanie wyświetlona strona podobna do poniższego zrzutu ekranu:
Wróć do terminalu i zapoznaj się z informacjami o uwierzytelnianiu, w tym oświadczeniami tokenu identyfikatora zwróconymi przez firmę Microsoft Entra.