Vertrouwelijke clienttoepassingen initialiseren in MSAL Node

In dit artikel leest u hoe u het ConfidentialClientApplication object initialiseert in MSAL Node. U leert hoe u geheimen en certificaten veilig gebruikt en hoe u de instantie configureert.

Prerequisites

Voordat u een toepassing initialiseert, moet u deze eerst registreren in de Microsoft Entra-beheercentrum, om een vertrouwensrelatie tot stand te brengen tussen uw toepassing en de Microsoft identity platform.

Nadat u uw app hebt geregistreerd, hebt u enkele of alle volgende waarden nodig die u kunt vinden in de Microsoft Entra-beheercentrum.

Value Vereist Description
Applicatie (client) ID Vereist Een GUID die uw toepassing uniek identificeert in de Microsoft identity platform.
Autoriteit Optional De URL van de identiteitsprovider (de instance) en het aanmeldingspubliek voor uw applicatie. De instantie en de aanmeldingsdoelgroep vormen bij het samenvoegen de instantie.
Id van directory (tenant) Optional Geef de directory-id (tenant) op als u alleen een Line-Of-Business-toepassing bouwt voor uw organisatie, ook wel een toepassing met één tenant genoemd.
Omleidings-URL Optional Als u een web-app bouwt, geeft u redirectUri aan waar de id-provider (de Microsoft identity platform) de beveiligingstokens moet retourneren die deze heeft uitgegeven.

Het ConfidentialClientApplication object initialiseren

Als u MSAL Node wilt gebruiken, moet u een ConfidentialClient-object instantiëren.

Geheimen en certificaten veilig gebruiken

Geheimen mogen nooit hardcoded worden. Het dotenv npm-pakket kan worden gebruikt voor het opslaan van geheimen of certificaten in een .env-bestand (in de hoofdmap van het project) dat moet worden opgenomen in .gitignore om onbedoelde uploads van de geheimen te voorkomen.

Certificaten kunnen ook worden gelezen vanuit bestanden via de fs-module van NodeJS. Ze mogen echter nooit worden opgeslagen in de map van het project. Productie-apps moeten certificaten ophalen uit Azure KeyVault of andere beveiligde sleutelkluizen.

Raadpleeg certificaten en geheimen voor meer informatie.

Zie het MSAL-voorbeeld: auth-code-with-certs

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);

Raadpleeg veelvoorkomende problemen bij het importeren van certificaten.

Basisbeginselen van configuratie

Configuratieopties voor knooppunten hebben common parameters en specific paremeters per verificatiestroom.

  • clientId is verplicht om een openbare clienttoepassing te initialiseren
  • authority wordt https://login.microsoftonline.com/common/ standaard ingesteld als de gebruiker deze niet instelt tijdens de configuratie
  • Een clientreferentie is verplicht voor vertrouwelijke clients. Clientreferentie kan een van de volgende zijn:
    • clientSecret is een geheime tekenreeks die is gegenereerd voor de app-registratie.
    • clientCertificate is een certificaat dat is ingesteld voor de app-registratie. Het thumbprintSha256 is een X.509 SHA-256-vingerafdruk van het certificaat en de privateKey met PEM gecodeerde persoonlijke sleutel. x5c is de optionele X.509-certificaatketen die wordt gebruikt in authenticatiescenario's op basis van subjectnaam/uitgever.
    • clientAssertion is een ClientAssertion-object met een assertietekenreeks of een callback-functie die een assertietekenreeks retourneert die door de toepassing wordt gebruikt bij het aanvragen van een token, evenals het type van de assertie (urn:ietf:params:oauth:client-assertion-type:jwt-bearer). De callback wordt telkens aangeroepen wanneer MSAL een token moet verkrijgen van de tokenverlener. App-ontwikkelaars moeten over het algemeen de callback gebruiken omdat asserties verlopen en nieuwe asserties moeten worden gemaakt. App-ontwikkelaars zijn verantwoordelijk voor de levensduur van de assertie. Gebruik dit mechanisme om tokens op te halen voor een downstream-API met behulp van een federatieve identiteitsreferentie.

Zie Configuratie in MSAL Node voor meer opties over Configuratie.

Autoriteit configureren

MSAL is standaard geconfigureerd met de common tenant, die wordt gebruikt voor toepassingen met meerdere tenants en toepassingen die persoonlijke accounts toestaan (niet B2C).

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

Als de doelgroep van uw toepassing uit één tenant bestaat, moet u een authority met uw tenant-id opgeven, zoals hieronder wordt weergegeven:

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

Volgende stappen