Class: Rack::Saml::Session
- Inherits:
-
Object
- Object
- Rack::Saml::Session
- Defined in:
- lib/rack/saml.rb
Constant Summary collapse
- RACK_SAML_COOKIE =
'_rack_saml'
Instance Method Summary collapse
- #env ⇒ Object
- #finish(type) ⇒ Object
- #generate_sid(length = 32) ⇒ Object
- #get_sid(type) ⇒ Object
-
#initialize(env) ⇒ Session
constructor
A new instance of Session.
- #is_valid?(type, sid = nil) ⇒ Boolean
- #start(type, timeout = 300) ⇒ Object
Constructor Details
#initialize(env) ⇒ Session
Returns a new instance of Session.
75 76 77 78 79 80 81 82 83 84 85 86 |
# 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 |
Instance Method Details
#env ⇒ Object
120 121 122 |
# File 'lib/rack/saml.rb', line 120 def env @session['saml_res.session']['env'] end |
#finish(type) ⇒ Object
116 117 118 |
# File 'lib/rack/saml.rb', line 116 def finish(type) @session["#{type}.session"] = {} end |
#generate_sid(length = 32) ⇒ Object
88 89 90 |
# File 'lib/rack/saml.rb', line 88 def generate_sid(length = 32) SecureRandom.hex(length) end |
#get_sid(type) ⇒ Object
92 93 94 |
# File 'lib/rack/saml.rb', line 92 def get_sid(type) @session["#{type}.session"]['sid'] end |
#is_valid?(type, sid = nil) ⇒ Boolean
124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# 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) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# 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 |