SNI-verificatie (Subject Name/Issuer) met MSAL Node

Warning

Voordat u hier begint, moet u het gebruik van certificaatreferenties met MSAL Node begrijpen.

Met SNI-verificatie (onderwerpnaam/verlener) kan een app worden geverifieerd met behulp van een openbaar certificaat van een vooraf vastgestelde vertrouwde CA ter ondersteuning van complexe scenario's voor het rollover van certificaten. Hierbij wordt de X5C-headerparameter gebruikt om het certificaat aan de server op te geven.

Gebruikers van de eerste partij moeten de instructies op de interne Microsoft Entra wiki volgen om hun Microsoft Entra-omgeving in te stellen ter ondersteuning van SNI.

x5c Bewering

U moet de tekenreeks van uw pem gecodeerde certificaat opgeven aan het MSAL-configuratieobject in het clientCertificate.x5c veld, naast het opgeven van beide clientCertificate.thumbprintSha256 en clientCertificate.privateKey:

Voorbeeldtekenreeks x5c uit een .pem bestand:

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

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

// ...

Zie ook: Certificaten: pfx converteren naar pem

App-configuratie

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

In het onderstaande fragment ziet u hoe u MSAL initialiseert voor SNI-verificatie (Subject Name/ Issuer):

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

Veelvoorkomende problemen

Raadpleeg veelvoorkomende problemen bij het importeren van certificaten.