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

使用Onelogin的JavaSaml签署消息和断言

闻人昊昊
2023-03-14

我试图遵循这个答案:https://stackoverflow.com/a/46000524/13925339

我可以签署SAML响应消息:

        String saml = "...";
        String pubKeyBytes = "...";
        String privKeyBytes = "...";

        Document documentResponse = Util.loadXML(saml); //loads string to document

        X509Certificate cert = null;
        cert = Util.loadCert(pubKeyBytes);
        PrivateKey privateKey = Util.loadPrivateKey(privKeyBytes);

        //sign saml assertion:
        String stringSignedResponse = Util.addSign(documentResponse, privateKey, cert, null);

我可以拿出SAML断言并签名:

        NodeList nodelist = documentResponse.getElementsByTagName("saml2:Assertion");
        Node nodeSamlAssertion = nodelist.item(0);

        String stringSignedSamlAssertion = Util.addSign(nodeSamlAssertion, privateKey, cert, null);

但是,我如何将这两者结合起来(使用OneLogin的https://www.samltool.com/sign_response.php在线工具处于“签名消息和断言”模式)?

共有1个答案

邬宏扬
2023-03-14

通过以下方式解决此问题

>

  • 将从Util.add符号返回的字符串(nodeSamlAssertion,...)返回到节点

    将该节点导入回SAML响应Document对象。

    使用元素。replaceChild方法将无符号SAML断言节点切换为有符号SAML断言节点

    元素nodeSignedSamlAssertion=DocumentBuilderFactory. newInstance(). newDocumentBuilder(). parse(new ByteArrayInputStream(stringSignedSamlAssertion.getBytes())). getDocumentElement();

         Node copiedNode = documentResponse.importNode(nodeSignedSamlAssertion, true);
         documentResponse.getDocumentElement().replaceChild(copiedNode, documentResponse.getElementsByTagName("saml2:Assertion").item(0));
    

  •  类似资料:
    • 我正在尝试使用谷歌办公套件设置SAML。但是我得到了这个错误 我已经配置断言应该在我的SP中签名。我可以在其他IDP(如onelogin、okta)中看到签署响应断言的选项。该配置适用于其他IDP,但看不到在谷歌办公套件SAML中唱响应断言的选项。 在Gsuite中,我只能看到签名响应的选项,而不能看到断言。 如何正确设置此设置? SP元数据如下所示:

    • 我发现,要将OneLogin Protect与saml断言一起使用,您需要调用SAML verify factor,而不提供OTP,并在这里阅读类似的问题,但是如果我简单地将它放入一个带有sleep的循环中,用户会受到OTP调用的轰炸,直到他们点击“Accept”。如果用户花了10-20秒拿出手机,而我睡了20秒,这意味着那些可以立即使用手机并在2-3秒内响应的用户,必须等待20秒来弥补较慢的呼叫

    • Signing messages can be used for various method of authentication and off-chain operations, which can be put on-chain if necessary. 字符串签名 By allowing a user to sign a string, which can be verified on-

    • 我正在尝试为服务实现SSO,并将ADF和PingFederate用作IDP。 当我避免签署AuthRequest(使用ADFS和平联邦)时,SSO工作,但失败并出现以下错误“SAML消息签名错误。签名AuthRequest时发行者:“My SP entityID”。 我已经用SP的证书更新了相应的依赖信任部分。我想,我在IDP配置中做错了什么。非常感谢您的帮助。 我尝试了这个答案,但没有任何运气:

    • 我一直在Eclipse中使用JUnit创建单元测试,我很清楚JUnit的基本原理。测试按应有的方式运行,现在是时候找到一种报告失败测试的好方法了。我在web上遇到的大多数例子都是使用某种构建的系统,如Ant、Maven或Hudson,在构建项目的同时运行测试,但在构建过程中不需要这种集成。测试应该能够独立于构建系统运行。最后,这些系统只需从JUnit获取信息,并将其放入一个漂亮的HTML布局中。

    • 我想知道如何用电子邮件数字证书签名,然后使用CURL发送这个签名的电子邮件消息。 下面是一个简单的文本/普通电子邮件的例子,我想签署。 我将整个消息放在一个名为的文件中,然后使用CURL发送它。 砰。仅此而已。 下面的链接描述了如何使用OpenSSL对mime消息进行签名。 https://www.misterpki.com/openSSL-smime/ RFC8551第3.5、3.5.1和3.5