Initialisieren vertraulicher Clientanwendungen in MSAL Node

In diesem Artikel erfahren Sie, wie Sie das ConfidentialClientApplication Objekt in MSAL Node initialisieren. Sie erfahren, wie Sie geheime Schlüssel und Zertifikate sicher verwenden und wie Sie die Autorität konfigurieren.

Voraussetzungen

Bevor Sie eine Anwendung initialisieren, müssen Sie sie zuerst im Microsoft Entra Admin Center registrieren und eine Vertrauensstellung zwischen Ihrer Anwendung und dem Microsoft Identity Platform einrichten.

Nach der Registrierung Ihrer App benötigen Sie einige oder alle der folgenden Werte, die im Microsoft Entra Admin Center zu finden sind.

Wert Erforderlich Description
Anwendungs-ID (Client) Erforderlich Eine GUID, die Ihre Anwendung innerhalb der Microsoft Identity Platform eindeutig identifiziert.
Autorität Fakultativ Die URL des Identitätsanbieters (die Instanz) und die Anmeldegruppe für Ihre Anwendung. Die Instanz und die Anmeldegruppe bilden, wenn sie verkettet sind, die Autorität.
Verzeichnis-ID (Mandant) Fakultativ Geben Sie die Verzeichnis-ID (Mandanten-ID) an, wenn Sie eine Geschäftsanwendung ausschließlich für Ihre Organisation erstellen, die häufig als Einzelmandantenanwendung bezeichnet wird.
Umleitungs-URI Fakultativ Wenn Sie eine Web-App erstellen, gibt dies redirectUri an, wo der Identitätsanbieter (die Microsoft Identity Platform) die von ihr ausgestellten Sicherheitstoken zurückgeben soll.

Initialisieren des ConfidentialClientApplication Objekts

Um MSAL Node zu verwenden, müssen Sie ein ConfidentialClient-Objekt instanziieren.

Sicheres Verwenden von geheimen Schlüsseln und Zertifikaten

Geheime Schlüssel sollten niemals hartcodiert werden. Das dotenv npm-Paket kann verwendet werden, um geheime Schlüssel oder Zertifikate in einer env-Datei (im Stammverzeichnis des Projekts) zu speichern, die in gitignore enthalten sein sollte, um versehentliche Uploads der geheimen Schlüssel zu verhindern.

Zertifikate können auch über das fs-Modul von NodeJS aus Dateien eingelesen werden. Sie sollten jedoch niemals im Verzeichnis des Projekts gespeichert werden. Produktions-Apps sollten Zertifikate von Azure KeyVault oder anderen sicheren Schlüsseltresorn abrufen.

Weitere Informationen finden Sie unter Zertifikaten und geheimen Schlüsseln .

Siehe MSAL-Beispiel: Authentifizierungscode mit Zertifikaten

import * as msal from "@azure/msal-node";
import "dotenv/config"; // process.env now has the values defined in a .env file

const clientAssertionCallback = async (config) => {
    // network request that uses config.clientId and (optionally) config.tokenEndpoint
    const result = await Promise.resolve(
        "network request which gets assertion"
    );
    return result;
};

const clientConfig = {
    auth: {
        clientId: "your_client_id",
        authority: "your_authority",
        clientSecret: process.env.clientSecret, // OR
        clientCertificate: {
            thumbprintSha256: process.env.thumbprint,
            privateKey: process.env.privateKey,
        }, // OR
        clientAssertion: clientAssertionCallback, // or a predetermined clientAssertion string
    },
};
const cca = new msal.ConfidentialClientApplication(clientConfig);

Bitte lesen Sie Häufige Probleme beim Importieren von Zertifikaten.

Konfigurationsgrundlagen

Konfigurationsoptionen für Knoten weisen common Parameter und specific Paremeter pro Authentifizierungsfluss auf.

  • clientId ist erforderlich, um eine öffentliche Clientanwendung zu initialisieren.
  • authority wird standardmäßig auf https://login.microsoftonline.com/common/ festgelegt, wenn der Benutzer es während der Konfiguration nicht festlegt
  • Für vertrauliche Clients sind Clientanmeldeinformationen erforderlich. Clientanmeldeinformationen können folgendes sein:
    • clientSecret ist die geheime Zeichenfolge, die bei der App-Registrierung generiert und festgelegt wird.
    • clientCertificate ist ein Zertifikat, das für die App-Registrierung festgelegt ist. Der thumbprintSha256 ist ein X.509-SHA-256-Fingerabdruck des Zertifikats, und der privateKey ist der PEM-kodierte private Schlüssel. x5c ist die optionale X.509-Zertifikatkette, die in Authentifizierungsszenarien für Antragstellername/Aussteller verwendet wird.
    • clientAssertion ist ein ClientAssertion -Objekt, das eine Assertionszeichenfolge oder eine Rückruffunktion enthält, die eine Assertionszeichenfolge zurückgibt, die die Anwendung beim Anfordern eines Tokens verwendet, sowie den Typ der Assertion (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Der Rückruf wird jedes Mal aufgerufen, wenn MSAL ein Token vom Tokenherausgeber abrufen muss. App-Entwickler sollten in der Regel den Rückruf verwenden, da Assertionen ablaufen und neue Assertionen erstellt werden müssen. App-Entwickler sind für die Assertionsdauer verantwortlich. Verwenden Sie diesen Mechanismus, um mithilfe eines Verbundidentitätsnachweises Token für eine nachgeschaltete API abzurufen.

Weitere Optionen zur Konfiguration finden Sie unter "Konfiguration" im MSAL-Knoten.

Autorisierung konfigurieren

Standardmäßig ist MSAL mit dem Mandanten common konfiguriert, der für mandantenfähige Anwendungen und Anwendungen verwendet wird, die private Konten zulassen (nicht B2C).

    authority: 'https://login.microsoftonline.com/common/'

Wenn die Zielgruppe Ihrer Anwendung aus einem einzelnen Mandanten besteht, müssen Sie eine Autorisierungsstelle mit Ihrer Mandanten-ID wie unten gezeigt angeben:

    authority: 'https://login.microsoftonline.com/{your_tenant_id}'

Nächste Schritte