【问题标题】:passport-saml issue for decoding and verifying signed SAML response用于解码和验证签名 SAML 响应的护照 saml 问题
【发布时间】:2018-01-11 22:46:52
【问题描述】:

我们需要实现基于 SAML 的安全身份验证。我们的 IDP 将是 Okta 和 OneLogin。为此,我们在 node.js express 应用程序中使用“passport”+“passport-saml”。我们在 SP 端为 Okta 使用以下策略配置-

var oktaLoginStrategy = {
    host: 'http://localhost:3000',
    path: '/login/callback',
    realm: 'urn:node:app',
    entryPoint: "https://dev-528399.oktapreview.com/app/builtiodev528399_oktasp1_1/exkbbi8vwj2OsHjbE0h7/sso/saml",
    issuer: "http://www.okta.com/exkbbi8vwj2OsHjbE0h7",
    additionalParams: {
        'RelayState': "test"
    },
    signatureAlgorithm: 'sha256',
    decryptionPvk: privateKey,
    privateCert: privateKey,
    cert: oktaPublicKey,
    identifierFormat: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'
};

对于 OneLogin,我们使用-

var oneLoginStrategy = {
    host: 'http://localhost:3000',
    path: '/login/callback',
    realm: 'urn:node:app',
    entryPoint: "https://flow-dev.onelogin.com/trust/saml2/http-post/sso/686218",
    issuer: "https://app.onelogin.com/saml/metadata/686218",
    additionalParams: {
        'RelayState': "test"
    },
    signatureAlgorithm: 'sha256',
    decryptionPvk: privateKey,
    privateCert: privateKey,
    cert: oneLoginPublicKey,
    validateInResponseTo: true,
    identifierFormat: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress'
};

但对于 Okta,它给出的错误是“无法读取未定义的属性 'getAttribute'”,而对于 OneLogin,它给出的错误是“无效签名”。此外,我们对模块进行了调试,发现 Okta 在查找算法时会中断,而对于 OneLogin,它能够解密“CipherData”,但在验证签名时会中断。

我们的私钥格式是-

-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

请帮助我们解决这个问题。

【问题讨论】:

    标签: passport.js saml okta passport-saml


    【解决方案1】:

    这里的问题来自 Okta SAML 断言格式,我们对 xml-encryption 模块的“decryptKeyInfo”函数进行了更改,该函数在 passport-saml 下用于从断言中查找“keyEncryptionMethod”。关于 OneLogin,这是我们的设置问题。

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多