Project

saml_tools

0.01
No commit activity in last 3 years
No release in over 3 years
SAML 2.0 is an XML-based protocol that uses security tokens containing assertions to pass information about a principal (usually an end user) between a SAML authority, that is, an identity provider, and a SAML consumer, that is, a service provider. SAML 2.0 enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO), which helps reduce the administrative overhead of distributing multiple authentication tokens to the user.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 5.1

Runtime

 Project Readme

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: