我的应用程序需要与 SAML IDP 集成,我使用的是用于 node.js 的 passport-saml,下面是配置
passport.use(new SamlStrategy(
{
issuer: 'http://192.168.1.5/assert',
entryPoint: 'https://wwww.aa.com/webservices/public/saml2sso?SPID=http://192.168.1.5/metadata.xml',
callbackUrl: 'http://192.168.1.5/assert',
decryptionPvk:fs.readFileSync(path.resolve(__dirname, '..', 'certs') + "/cert.pem").toString(),
privateCert: fs.readFileSync(path.resolve(__dirname, '..', 'certs') + "/key.pem").toString(),
cert: [fs.readFileSync(path.resolve(__dirname, '..', 'certs') + "/dev.cer").toString()],
},
function (profile, done) {
return done(null, profile);
}
))
我知道证书参数是来自 IDP 的证书(公钥),但是 privateCert 和 decryptionPvk 是什么。我将私钥 key.pem 作为 privateCert 并将公钥 (cert.pem) 作为 decryptionPvk 传递,但它不起作用。我使用以下命令生成密钥和证书: openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900