SAML Tools¶ ↑
Tools to simplify the creation, validation and sending of SAML objects.
These tools are available as a gem:
gem ‘saml_tools’
SamlTool::Certificate¶ ↑
Version of OpenSSL::X509::Certificate that adds methods to simplify the retrieval of data used in SAML responses.
SamlTool::Decoder¶ ↑
Decodes base64 and unzips content.
SamlTool::Encoder¶ ↑
Zips content and base64 encodes it.
SamlTool::ErbBuilder¶ ↑
Used to build SAML content from erb templates.
output = SamlTool::ErbBuilder.build( template: '<foo><%= settings %></foo>', settings: 'bar' ) output == '<foo>bar</foo>'
SamlTool::Reader¶ ↑
Wraps SAML documents and exposes data via methods
reader = SamlTool::Reader.new( output, {foo: '//foo/text()'} ) reader.foo == 'bar'
SamlTool::Redirect¶ ↑
Used to construct redirection uris
redirect = Redirect.uri( to: 'http://example.com', data: { foo: 'bar' } ) redirect == "http://example.com?foo=bar"
SamlTool::ResponseReader¶ ↑
A version of SamlTool::Reader tailored for handling SAML responses. It includes a valid? method that validates the SAML structure and checks the signature is correct.
SamlTool::RsaKey¶ ↑
Version of OpenSSL::PKey::RSA that adds methods to simplify the retrieval of data used in SAML responses.
SamlTool::SAML¶ ↑
A wrapper for Nokogiri::XML, that applies defaults that are appropriate for SAML
SamlTool::Settings¶ ↑
Packages up settings so that they can be more easily passed to other objects.
SamlTool::Validator¶ ↑
Compares documents with SAML schemas to test if they have a valid structure.
Further reading¶ ↑
I’ve blogged here about some of highs and lows of building these tools.
There is a demo app that I have been working with as I’ve developed these tools:
https://github.com/warwickshire/saml_tools_demo
This work has been greatly influenced by: