Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
-
clientIdist erforderlich, um eine öffentliche Clientanwendung zu initialisieren. -
authoritywird standardmäßig aufhttps://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:
-
clientSecretist die geheime Zeichenfolge, die bei der App-Registrierung generiert und festgelegt wird. -
clientCertificateist ein Zertifikat, das für die App-Registrierung festgelegt ist. DerthumbprintSha256ist ein X.509-SHA-256-Fingerabdruck des Zertifikats, und derprivateKeyist der PEM-kodierte private Schlüssel.x5cist die optionale X.509-Zertifikatkette, die in Authentifizierungsszenarien für Antragstellername/Aussteller verwendet wird. -
clientAssertionist 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}'