当前位置: 首页 > 知识库问答 >
问题:

用于解码和验证签名SAML响应的护照-saml发行

缑赤岩
2023-03-14

我们需要实现基于SAML的安全身份验证。我们的IDP将是Okta和OneLogin。为此,我们在节点中使用“passport”“passport saml”。JSExpress应用程序。我们在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-----

请帮我们解决这个问题。

共有1个答案

长孙雅志
2023-03-14

这里的问题是来自Okta SAML断言格式,我们在xml加密模块的"decryptKeyInfo"函数中进行了更改,该函数用于从断言中找到"keyEncryptionmethod"。关于OneLogin这是我们的设置问题。

 类似资料:
  • 我试图遵循以下规范来验证SAML响应的签名:https://www.w3.org/tr/xmldsig-core/#sec-pkcs1 下面是我的工作流程:我得到SAML响应。我去掉签名信封,我把它规范化,我检查摘要,然后我检查签名。我能够成功地计算转换的SAML响应的SHA1摘要,并对其进行验证。然而,RSA-SHA1签名检查仍然无法实现。 SAML响应包含签名方法算法:http://www.w

  • 2016年8月1日11:34:39 AM org.apache.catalina.core.standardWrapperValve在路径为[/travelocity.com]的上下文中为servlet[jsp]调用严重:servlet.service()引发了异常[SAML响应的签名验证失败],根本原因为org.wso2.carbon.identity.sso.agent.exception.s

  • 我在验证从ADFS服务器获得的SAML响应时遇到了问题。我以url的形式获得响应,例如,而是http://www.w3.org/2001/04/xmldsig-more#rsa-sha256。我设法解码了响应,但无法找到使用给定签名验证响应的方法。 我的主要问题是签名有一个非常意外的格式。由于给定的签名算法,我希望签名的长度为32字节,但是当我base64-decode签名时,我得到的是长度为25

  • 我通过HTTP重定向从ADFS获得了SAML响应,并且在重定向时收到了以下请求参数

  • 我是从IDP接收SAML断言签名的服务提供商。我在Tomcat上使用JOSSO来使用断言。这里的问题是我无法验证断言签名。 IDP证书使用别名“IDP”上传到我的密钥库。 在验证sig时,我得到以下错误: 为什么JOSSO无法检测密钥库中的证书并验证签名?我需要以不同的方式定义别名吗?