在Ruby中规范化XML

wha*_*ter 10 ruby xml saml digital-signature

我正在使用Ruby/Rails开发SAML网关,并且我正在尝试编写一些代码来验证传入SAML响应的xml数字签名与原始服务的x509证书.

我的问题:签名依赖于XML的规范化版本被散列,然后签约,我无法找到一个Ruby的lib /宝石,将规范化每个XML 规范.我在rubyforge上发现了一个超级旧的宝石,但是如果像nokogiri这样的功能支持这种功能我会更感兴趣(来自nokogiri docs,它没有).

我已经广泛搜索过了,但我想在这里问一下是否有人有任何好的见解,然后再尝试编写我自己的版本或重新编写现有的c14n-r库.

小智 5

给这两个宝石一个镜头:

http://rubygems.org/gems/coupa-libxml-ruby

http://rubygems.org/gems/xmlsec-ruby

我为SAML项目编写了它们.第一个修补程序libxml-ruby为基本C库中的canonicalize函数添加一个绑定.

后者是xmlsec的ruby绑定.现在一切正常都是签名验证,这是我项目所需要的,但听起来它也符合你的需求.

我建议使用xmlsec,因为尝试编写自己的XML签名验证代码是徒劳的.等到你必须处理多个封装签名,嵌入式证书,gah.让xmlsec处理那个垃圾.