Subjektname-/Aussteller (SNI)-Authentifizierung mit MSAL Node

Warning

Bevor Sie hier beginnen, stellen Sie sicher, dass Sie die Verwendung von Zertifikatanmeldeinformationen mit MSAL Node verstehen.

Die SNI-Authentifizierung (Antragstellername/Aussteller) ermöglicht es einer App, sich mithilfe eines öffentlichen Zertifikats von einer vordefinierten vertrauenswürdigen Zertifizierungsstelle zu authentifizieren, um komplexe Zertifikatrolloverszenarien zu unterstützen. Er verwendet den X5C-Headerparameter , um das Zertifikat für den Server bereitzustellen.

Benutzer von Erstanbietern sollten die Anweisungen auf dem internen Microsoft Entra Wiki befolgen, um ihre Microsoft Entra Umgebung einzurichten, um SNI zu unterstützen.

x5c Anspruch

Sie müssen die Zeichenfolge aus Ihrem pem-kodierten Zertifikat im Feld clientCertificate.x5c des MSAL-Konfigurationsobjekts angeben, zusätzlich zu clientCertificate.thumbprintSha256 und clientCertificate.privateKey:

Beispielzeichenfolge x5c aus einer .pem Datei:

-----BEGIN CERTIFICATE-----
<cert1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<cert2>
-----END CERTIFICATE-----

// ...

Siehe auch: Zertifikate: Konvertieren von pfx in pem

App-Konfiguration

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

Der folgende Codeausschnitt zeigt, wie MSAL für die Authentifizierung mit Subjektname/Aussteller (SNI) initialisiert wird:

var msal = require('@azure/msal-node');
require('dotenv').config(); // process.env now has the values defined in a .env file

const config = {
    auth: {
        clientId: "ENTER_CLIENT_ID",
        authority: "https://login.microsoftonline.com/ENTER_TENANT_ID",
        clientCertificate: {
                thumbprintSha256: process.env.thumbprint, // a 64-digit hexadecimal string
                privateKey: process.env.privateKey,
                x5c: process.env.x5c 
            }
   }
}
};

// Create msal application object
const cca = new msal.ConfidentialClientApplication(config);

Häufige Probleme

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