我正在使用
Ruby / Rails开发一个SAML网关,我正在尝试编写一些代码,用于根据原始服务的x509证书验证传入的SAML响应的
xml digital signature.
我的问题:签名取决于散列的XML的规范化版本,然后签名,我无法找到一个ruby lib / gem,它将规范化每个the spec的XML.我发现一个super old gem on rubyforge是一个烂摊子,但我会如果像nokogiri这样的东西支持这种功能(从nokogiri文档,它没有),更有兴趣.
我已经广泛搜索,但是我想在这里询问,看看有没有人有什么好的见解,然后我去尝试写我自己的版本或重新编写现有的c14n-r库.
解决方法
给这两个宝石一枪:
http://rubygems.org/gems/coupa-libxml-ruby
http://rubygems.org/gems/xmlsec-ruby
我写了一个SAML项目.第一个补丁libxml-ruby为基础C库中的canonicalize函数添加绑定.
后者是xmlsec的ruby绑定.现在所有的工作都是签名验证,这是我所需要的项目,但它听起来也符合你的需求.
我建议使用xmlsec,因为尝试编写自己的XML签名验证码是一种无效的练习.只要等到你必须处理多个包络签名,嵌入证书,加油.让xmlsec处理那个垃圾.