Skip to content

Tools to simplify the creation, validation and sending of SAML objects

License

Notifications You must be signed in to change notification settings

warwickshire/saml_tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

About

Tools to simplify the creation, validation and sending of SAML objects

Resources

License

Stars

Watchers

Forks

Packages

No packages published