class Rack::Saml::Session
Constants
- RACK_SAML_COOKIE
Public Class Methods
new(env)
click to toggle source
# File lib/rack/saml.rb, line 75 def initialize(env) @rack_session = env['rack.session'] if @rack_session[RACK_SAML_COOKIE].nil? @session = @rack_session[RACK_SAML_COOKIE] = { 'ds.session' => {}, 'saml_authreq.session' => {}, 'saml_res.session' => {'env' => {}} } else @session = @rack_session[RACK_SAML_COOKIE] end end
Public Instance Methods
env()
click to toggle source
# File lib/rack/saml.rb, line 120 def env @session['saml_res.session']['env'] end
finish(type)
click to toggle source
# File lib/rack/saml.rb, line 116 def finish(type) @session["#{type}.session"] = {} end
generate_sid(length = 32)
click to toggle source
# File lib/rack/saml.rb, line 88 def generate_sid(length = 32) SecureRandom.hex(length) end
get_sid(type)
click to toggle source
# File lib/rack/saml.rb, line 92 def get_sid(type) @session["#{type}.session"]['sid'] end
is_valid?(type, sid = nil)
click to toggle source
# File lib/rack/saml.rb, line 124 def is_valid?(type, sid = nil) session = @session["#{type}.session"] return false if session['sid'].nil? # no valid session if session['expires'].nil? # no expiration return true if sid.nil? # no sid check return true if session['sid'] == sid # sid check else if Time.now < Time.parse(session['expires']) # before expiration return true if sid.nil? # no sid check return true if session['sid'] == sid # sid check end end false end
start(type, timeout = 300)
click to toggle source
# File lib/rack/saml.rb, line 96 def start(type, timeout = 300) sid = nil if timeout.nil? period = Time.now + 300 else period = Time.now + timeout end case type when 'ds' sid = generate_sid(4) when 'saml_authreq' sid = generate_sid when 'saml_res' sid = generate_sid end @session["#{type}.session"]['sid'] = sid @session["#{type}.session"]['expires'] = period.to_s @session["#{type}.session"] end