Skip to content

Latest commit

 

History

History
84 lines (61 loc) · 2.38 KB

README.rdoc

File metadata and controls

84 lines (61 loc) · 2.38 KB

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: