Freigeben über


Tutorial: Vorbereiten einer CLI-Anwendung mit Node.js für die Authentifizierung

Gilt für:Weißer Kreis mit grauem X-Symbol. Mitarbeitermieter Grüner Kreis mit weißem Häkchen-Symbol. Externe Mieter (weitere Informationen)

Dieses Lernprogramm ist Teil 1 einer Reihe, die das Erstellen einer Node.js Befehlszeilenschnittstellen-App (CLI) veranschaulicht und die Authentifizierung mithilfe des Microsoft Entra Admin Centers vorbereitet. Die Clientanwendung, die Sie erstellen, verwendet den OAuth 2.0-Autorisierungscodefluss mit PKCE (Proof Key for Code Exchange) für die sichere Benutzerauthentifizierung.

In diesem Tutorial werden Sie:

  • Erstellen eines neuen Node.js-Anwendungsprojekts
  • Installieren von App-Abhängigkeiten
  • Erstellen des MSAL-Konfigurationsobjekts

Voraussetzungen

Aktivieren des öffentlichen Clientflows

Führen Sie diese Schritte aus, um Ihre App als öffentlichen Client zu identifizieren:

  1. Wählen Sie unter Verwalten die Option Authentifizierung aus.

  2. Wählen Sie unter Erweiterte Einstellungen für Öffentliche Clientflows zulassen die Option Ja aus.

  3. Wählen Sie Speichern aus, um Ihre Änderungen zu speichern.

Erstellen eines neuen Node.js-Anwendungsprojekts

Hier erstellen Sie eine CLI-Anwendung mit Node.js von Grund auf neu. Wenn Sie lieber ein fertiges Codebeispiel zum Lernen verwenden möchten, laden Sie die Node.js-CLI-Beispielanwendung von GitHub herunter.

Führen Sie die folgenden Schritte aus, um die Node.js-CLI-Anwendung von Grund auf neu zu erstellen:

  1. Erstellen Sie einen Ordner zum Hosten Ihrer Anwendung, und geben Sie ihm einen Namen wie ciam-sign-in-node-cli-app.

  2. Navigieren Sie in Ihrem Terminal zu Ihrem Projektverzeichnis, z. B. cd ciam-sign-in-node-cli-app, und Initialisieren Sie Ihr Projekt mit npm init. Daraufhin wird eine package.json-Datei in Ihrem Projektordner erstellt, die Verweise auf alle npm-Pakete enthält.

  3. Erstellen Sie in Ihrem Projektstammverzeichnis zwei Dateien namens authConfig.js und index.js. Die Datei authConfig.js enthält die Authentifizierungskonfigurationsparameter, während index.js die Authentifizierungslogik der App enthält.

Nach dem Erstellen der Dateien sollten Sie die folgende Projektstruktur haben:

ciam-sign-in-node-cli-app/
   ├── authConfig.js
   └── index.js
   └── package.json

Installieren von App-Abhängigkeiten

Die Anwendung, die Sie erstellen, verwendet MSAL Node zum Anmelden von Benutzern. Zum Installieren des MSAL Node-Pakets als Abhängigkeit in Ihrem Projekt öffnen Sie das Terminal in Ihrem Projektverzeichnis, und führen Sie den folgenden Befehl aus.

npm install @azure/msal-node   

Außerdem installieren Sie das open-Paket, damit Ihre Node.js-App im Webbrowser URLs öffnen kann.

npm install open

Erstellen des MSAL-Konfigurationsobjekts

Öffnen Sie in Ihrem Code-Editor authConfig.js, der die Konfigurationsparameter des MSAL-Objekts enthält, und fügen Sie den folgenden Code hinzu:


const { LogLevel } = require('@azure/msal-node');

const msalConfig = {
    auth: {
        clientId: 'Enter_the_Application_Id_Here', 
        authority: `https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/`, 
    },
    system: {
        loggerOptions: {
            loggerCallback(loglevel, message, containsPii) {
                // console.log(message);
            },
            piiLoggingEnabled: false,
            logLevel: LogLevel.Verbose,
        },
    },
};

Das msalConfig-Objekt enthält eine Reihe von Konfigurationsoptionen, die zum Anpassen des Verhaltens Ihrer Authentifizierungsflows verwendet werden können. Dieses Konfigurationsobjekt wird bei der Erstellung an die Instanz unserer öffentlichen Clientanwendung übergeben. Suchen Sie in Ihrer authConfig.js-Datei die Platzhalter:

  • Enter_the_Application_Id_Here, und ersetzen Sie ihn mit der Anwendungs-ID (Client-ID) der zuvor von Ihnen registrierten Anwendung.

  • Enter_the_Tenant_Subdomain_Here und ersetzen Sie es durch die Verzeichnis-(Mandanten-)Unterdomäne. Wenn die primäre Domäne Ihres Mandanten z. B. contoso.onmicrosoft.com ist, verwenden Sie contoso. Wenn Sie den Namen Ihrer Mandantendomäne nicht kennen, erfahren Sie, wie Sie Ihre Mandantendetails herausfinden.

Im Konfigurationsobjekt fügen Sie außerdem LoggerOptions hinzu, das zwei Optionen enthält:

  • loggerCallback: Eine Rückruffunktion, welche die Protokollierung von MSAL-Anweisungen verarbeitet
  • piiLoggingEnabled: Eine Konfigurationsoption, die bei Festlegung auf „true“ die Protokollierung personenbezogener Informationen (PII) aktiviert. Für unsere App legen wir diese Option auf „false“ fest.

Fügen Sie nach dem Erstellen des msalConfig-Objekts ein loginRequest-Objekt hinzu, das die Bereiche enthält, die für die Anwendung erforderlich sind. Bereiche definieren die Zugriffsebene, die die Anwendung auf Benutzerressourcen hat. Obwohl das Scopes-Array im Beispielcodeschnipsel keine Werte aufweist, fügt MSAL standardmäßig jeder Login-Anfrage die OIDC-Scopes (openid, profile, email) hinzu. Benutzer werden während der Anmeldung aufgefordert, diesen Bereichen zuzustimmen. Zum Erstellen des loginRequest-Objekts fügen Sie authConfig.js den folgenden Code hinzu.

const loginRequest = {
    scopes: [],
};

Exportieren Sie in authcConfig.js die Objekte msalConfig und loginRequest, damit bei Bedarf auf sie zugegriffen werden kann, indem Sie den folgenden Code hinzufügen:

module.exports = {
    msalConfig: msalConfig,
    loginRequest: loginRequest,
};

Verwenden Sie eine benutzerdefinierte Domäne, um die Authentifizierungs-URL vollständig zu kennzeichnen. Aus Benutzerperspektive verbleiben Benutzer während des Authentifizierungsprozesses in Ihrer Domäne, anstatt zu ciamlogin.com Domänennamen umgeleitet zu werden.

Führen Sie die folgenden Schritte aus, um eine benutzerdefinierte Domäne zu verwenden:

  1. Führen Sie die Schritte unter Aktivieren benutzerdefinierter URL-Domänen für Apps in externen Mandanten aus, um eine benutzerdefinierte URL-Domäne für Ihren externen Mandanten zu aktivieren.

  2. Suchen Sie in Ihrer Datei authConfig.js nach dem auth-Objekt, und führen Sie dann die folgenden Schritte aus:

    1. Aktualisieren Sie den Wert der authority Eigenschaft auf https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Ersetzen Sie sie Enter_the_Custom_Domain_Here durch Ihre benutzerdefinierte URL-Domäne und Enter_the_Tenant_ID_Here durch Ihre Mandanten-ID. Wenn Sie Ihre Mandanten-ID nicht kennen, finden Sie weitere Informationen unter Abrufen der Details des externen Mandanten.
    2. Hinzufügen einer knownAuthorities Eigenschaft mit einem Wert [Enter_the_Custom_Domain_Here].

Nachdem Sie die Änderungen an Ihrer authConfig.js Datei vorgenommen haben, wenn Ihre benutzerdefinierte URL-Domäne login.contoso.com ist und Ihre Mandanten-ID aaaabbbb-0000-cccc-1111-ddddd222eeeee ist, sollte die Datei ähnlich wie der folgende Codeausschnitt aussehen:

//...
const msalConfig = {
    auth: {
        authority: process.env.AUTHORITY || 'https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee', 
        knownAuthorities: ["login.contoso.com"],
        //Other properties
    },
    //...
};

Nächster Schritt

Erfahren Sie, wie Sie einer Node.js-CLI-Anwendung Unterstützung für die Anmeldung hinzufügen: