Autentikasi Nama Subjek/Penerbit (SNI) dengan Node MSAL

Warning

Sebelum memulai di sini, pastikan Anda memahami Menggunakan kredensial sertifikat dengan MSAL Node.

Autentikasi SNI (Nama Subjek/Penerbit) memungkinkan aplikasi mengautentikasi menggunakan sertifikat publik dari CA tepercaya yang telah ditentukan untuk mendukung skenario rollover sertifikat yang kompleks. Ini menggunakan parameter header X5C untuk menyediakan sertifikat ke server.

Pengguna pihak pertama harus mengikuti instruksi di wiki Microsoft Entra internal untuk menyiapkan lingkungan Microsoft Entra mereka untuk mendukung SNI.

x5c Klaim

Anda perlu memberikan string dari sertifikat terenkode Anda pem ke dalam objek konfigurasi MSAL di bidang clientCertificate.x5c, selain juga memberikan clientCertificate.thumbprintSha256 dan clientCertificate.privateKey:

Contoh x5c string dari .pem file:

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

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

// ...

Lihat juga: Sertifikat: mengonversi pfx ke pem

Konfigurasi aplikasi

Menggunakan rahasia dan sertifikat dengan aman

Rahasia tidak boleh dikodekan secara permanen. Paket npm dotenv dapat digunakan untuk menyimpan rahasia atau sertifikat dalam file .env (terletak di direktori akar proyek) yang harus disertakan dalam .gitignore untuk mencegah unggahan rahasia yang tidak disengaja.

Sertifikat juga dapat dibaca dari file melalui modul fs NodeJS. Namun, mereka tidak boleh disimpan di direktori proyek. Aplikasi produksi harus mengambil sertifikat dari Azure KeyVault, atau brankas kunci aman lainnya.

Silakan lihat sertifikat dan rahasia untuk informasi lebih lanjut.

Lihat sampel MSAL: auth-code-with-certs

Cuplikan di bawah ini menunjukkan cara menginisialisasi MSAL untuk autentikasi Nama Subjek / Penerbit (SNI):

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

Masalah Umum

Silakan lihat Masalah umum saat mengimpor sertifikat.