Uwierzytelnianie nazwy podmiotu/wystawcy (SNI) za pomocą biblioteki MSAL Node

Warning

Zanim zaczniesz, upewnij się, że zapoznałeś się z tematem Używanie poświadczeń opartych na certyfikacie w bibliotece MSAL Node.

Uwierzytelnianie SNI (nazwa podmiotu/wystawca) umożliwia aplikacji uwierzytelnianie przy użyciu certyfikatu publicznego ze wstępnie określonego zaufanego urzędu certyfikacji w celu obsługi złożonych scenariuszy przerzucania certyfikatów. Używa parametru nagłówka X5C , aby udostępnić certyfikat serwerowi.

Użytkownicy wewnętrzni powinni postępować zgodnie z instrukcjami w wewnętrznej witrynie wiki Microsoft Entra, aby skonfigurować środowisko Microsoft Entra tak, aby obsługiwało SNI.

x5c Roszczenia

Musisz podać ciąg z certyfikatu zakodowanego przy użyciu pem w polu clientCertificate.x5c obiektu konfiguracji MSAL, oprócz podania zarówno clientCertificate.thumbprintSha256, jak i clientCertificate.privateKey:

Przykładowy x5cciąg z pliku .pem:

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

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

// ...

Zobacz również: Certyfikaty: konwertowanie pfx na pem

Konfiguracja aplikacji

Bezpieczne używanie wpisów tajnych i certyfikatów

Wpisy tajne nigdy nie powinny być zakodowane na stałe. Pakiet npm dotenv może służyć do przechowywania wpisów tajnych lub certyfikatów w pliku env (znajdującym się w katalogu głównym projektu), który powinien zostać uwzględniony w pliku gitignore, aby zapobiec przypadkowym przekazaniu wpisów tajnych.

Certyfikaty można również odczytywać z plików za pośrednictwem modułu fs środowiska NodeJS. Jednak nigdy nie powinny być przechowywane w katalogu projektu. Aplikacje produkcyjne powinny pobierać certyfikaty z usługi Azure KeyVault lub innych bezpiecznych magazynów kluczy.

Aby uzyskać więcej informacji, zobacz certyfikaty i wpisy tajne .

Zobacz przykład MSAL: auth-code-with-certs

Poniższy fragment kodu przedstawia sposób inicjowania biblioteki MSAL na potrzeby uwierzytelniania nazwy podmiotu/wystawcy (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);

Typowe problemy

Zapoznaj się z typowymi problemami podczas importowania certyfikatów.