Проверка подлинности имени субъекта или издателя (SNI) с помощью узла MSAL

Предупреждение

Перед началом работы убедитесь, что вы узнаете , как использовать учетные данные сертификата с MSAL Node.

Аутентификация SNI (имени субъекта/издателя) позволяет приложению проходить аутентификацию с использованием открытого сертификата, выданного заранее определённым доверенным центром сертификации, для поддержки сложных сценариев ротации сертификатов. Он использует параметр заголовка X5C для предоставления сертификата серверу.

Сторонние пользователи должны следовать инструкциям по внутреннему Microsoft Entra вики-сайту, чтобы настроить среду Microsoft Entra для поддержки SNI.

x5c претензия

Вам потребуется указать строку из сертификата, закодированного с помощью pem, в поле clientCertificate.x5c объекта конфигурации MSAL, а также указать и clientCertificate.thumbprintSha256, и clientCertificate.privateKey:

Пример x5c строки из .pem файла:

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

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

// ...

См. также: сертификаты: преобразование pfx в pem

Конфигурация приложения

Безопасное использование секретов и сертификатов

Секреты никогда не должны быть жестко закодированы. Пакет dotenv npm можно использовать для хранения секретов или сертификатов в env-файле (расположен в корневом каталоге проекта), который должен быть включен в gitignore, чтобы предотвратить случайные отправки секретов.

Сертификаты также можно считывать из файлов с помощью модуля fs NodeJS. Однако они никогда не должны храниться в каталоге проекта. Рабочие приложения должны получать сертификаты из Azure KeyVault или других защищенных хранилищ ключей.

Дополнительные сведения см. в сертификатах и секретах .

См. пример MSAL: auth-code-with-certs

В приведенном ниже фрагменте показано, как инициализировать MSAL для проверки подлинности имени субъекта или издателя (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);

Распространенные проблемы

Обратитесь к разделу Распространённые проблемы при импорте сертификатов.