MSAL ノードを使用したサブジェクト名/発行者 (SNI) 認証

Warning

ここで開始する前に、 MSAL ノードでの証明書資格情報の使用について理解していることを確認してください。

SNI (サブジェクト名/発行者) 認証を使用すると、事前に定義された信頼された CA のパブリック証明書を使用してアプリを認証し、複雑な証明書のロールオーバー シナリオをサポートできます。 X5C ヘッダー パラメーターを使用して、サーバーに証明書を提供します。

ファースト パーティのユーザーは、内部Microsoft Entra Wiki の指示に従って、SNI をサポートするようにMicrosoft Entra環境を設定する必要があります。

x5c 要求

pemclientCertificate.x5cの両方を指定するだけでなく、clientCertificate.thumbprintSha256でエンコードされた証明書の文字列を clientCertificate.privateKey フィールドの MSAL 構成オブジェクトに指定する必要があります。

.pem ファイルの x5c ストリングの例:

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

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

// ...

証明書: pfx を pem に変換する」も参照してください

アプリの構成

シークレットと証明書を安全に使用する

シークレットはハードコーディングしないでください。 dotenv npm パッケージを使用すると、シークレットの誤アップロードを防ぐために、.gitignore に含める必要がある .env ファイル (プロジェクトのルート ディレクトリにある) にシークレットまたは証明書を格納できます。

証明書は、NodeJS の fs モジュールを介してファイルから読み取ることもできます。 ただし、プロジェクトのディレクトリに保存しないでください。 運用アプリでは、Azure KeyVault またはその他のセキュリティで保護されたキー コンテナーから証明書をフェッチする必要があります。

詳細については、 証明書とシークレットを 参照してください。

MSAL サンプルを参照してください。 auth-code-with-certs

次のスニペットは、サブジェクト名/発行者 (SNI) 認証用に MSAL を初期化する方法を示しています。

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

一般的な問題

証明書をインポートするときの一般的な問題を参照してください。