使用 MSAL 节点进行使用者名称/颁发者(SNI)身份验证

Warning

在开始之前,请确保您已了解 在 MSAL Node 中使用证书凭据

SNI(使用者名称/颁发者)身份验证允许应用使用预先确定的受信任 CA 中的公共证书进行身份验证,以支持复杂的证书滚动更新方案。 它使用 X5C 标头参数 向服务器提供证书。

第一方用户应按照内部 Microsoft Entra wiki 上的说明设置其Microsoft Entra环境以支持 SNI。

x5c 声明

除了提供 clientCertificate.thumbprintSha256clientCertificate.privateKey 外,你还需要将来自 pem 编码证书的字符串提供给 MSAL 配置对象中的 clientCertificate.x5c 字段:

来自 .pem 文件的示例 x5c 字符串:

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

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

// ...

另请参阅: 证书:将 pfx 转换为 pem

应用程序配置

安全地使用机密和证书

不应对机密进行硬编码。 dotenv npm 包可用于将机密或证书存储在 .env 文件(位于项目的根目录中)中,该文件应包含在 .gitignore 中,以防止意外上传机密。

还可以通过 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);

常见问题

请参阅 导入证书时的常见问题