0

我的应用程序需要与 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

4

2 回答 2

1

如果你还没有,你应该看看这个线程

您只附加了代码的配置部分,但我猜 [authentication callback] ( https://www.npmjs.com/package/passport-saml#provide-the-authentication-callback ) 部分已正确实现。至于“cert”属性,我认为您应该根据passport-saml 文档示例提供“cert.pem”的内容。

于 2016-09-26T13:50:43.957 回答
0

我认为答案有点晚了,但是这两个选项都用于在我们将身份验证请求发送到 IdP 之前对其进行加密。所以你必须添加你的私钥。

{decryptionPvk: privateKey, privateCert: privateKey}
于 2020-08-24T18:21:46.620 回答