maestrano 1.0.0.pre.RC6 → 1.0.0.pre.RC7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/maestrano/sso/session.rb +19 -16
- data/lib/maestrano/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82ec4814d881186a1f8890716dc77deffdc71508
|
4
|
+
data.tar.gz: 5ee9ca302567a4fe51d41a9da379aa203279017e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 853f8b39ff3255416247d6019ab51330cb0398283c9b0c63d44af929870a57498f5fd8629c5e6bd7e15a0f36266b92d8edf503a7b24d0a5be846fbfc8f8498c1
|
7
|
+
data.tar.gz: 979bc66f886591f07de3ceb00b60b0ba178b3543efe4d5bf14204c8d03a0b63f45936065cffebdf1bfd875e2fcf17aab96b551947326ed91e6e5c840a2f80bb2
|
@@ -2,25 +2,26 @@ module Maestrano
|
|
2
2
|
module SSO
|
3
3
|
class Session
|
4
4
|
include Preset
|
5
|
-
attr_accessor :session, :uid, :session_token, :recheck, :group_uid
|
6
|
-
|
5
|
+
attr_accessor :session, :uid, :session_token, :recheck, :group_uid, :preset
|
6
|
+
|
7
7
|
# Load a Maestrano::SSO::Session object from a
|
8
8
|
# hash generated by Maestrano::SSO::BaseUser#to_hash
|
9
9
|
def self.from_user_auth_hash(session, auth)
|
10
10
|
instance = self.new({})
|
11
11
|
instance.session = session
|
12
|
-
|
12
|
+
|
13
13
|
if (extra = (auth[:extra] || auth['extra'])) && (sso_session = (extra[:session] || extra['session']))
|
14
14
|
instance.uid = (sso_session[:uid] || sso_session['uid'])
|
15
15
|
instance.session_token = (sso_session[:token] || sso_session['token'])
|
16
16
|
instance.group_uid = (sso_session[:group_uid] || sso_session['group_uid'])
|
17
|
+
instance.preset = self.preset
|
17
18
|
if recheck = (sso_session[:recheck] || sso_session['recheck'])
|
18
19
|
instance.recheck = recheck
|
19
20
|
end
|
20
21
|
end
|
21
22
|
return instance
|
22
23
|
end
|
23
|
-
|
24
|
+
|
24
25
|
def initialize(session)
|
25
26
|
self.session = session
|
26
27
|
if (self.session = session)
|
@@ -31,42 +32,43 @@ module Maestrano
|
|
31
32
|
self.session_token = decrypted_session['session']
|
32
33
|
self.recheck = Time.iso8601(decrypted_session['session_recheck'])
|
33
34
|
self.group_uid = decrypted_session['group_uid']
|
35
|
+
self.preset = decrypted_session['preset']
|
34
36
|
end
|
35
37
|
rescue
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
39
|
-
|
41
|
+
|
40
42
|
def remote_check_required?
|
41
43
|
if self.uid && self.session_token && self.recheck
|
42
44
|
return (self.recheck <= Time.now)
|
43
45
|
end
|
44
46
|
return true
|
45
47
|
end
|
46
|
-
|
48
|
+
|
47
49
|
# Check remote maestrano session and update the
|
48
50
|
# recheck attribute if the session is still valid
|
49
51
|
# Return true if the session is still valid and
|
50
52
|
# false otherwise
|
51
53
|
def perform_remote_check
|
52
54
|
# Get remote session info
|
53
|
-
url = Maestrano::SSO[self.
|
55
|
+
url = Maestrano::SSO[self.preset].session_check_url(self.uid, self.session_token)
|
54
56
|
begin
|
55
57
|
response = RestClient.get(url)
|
56
58
|
response = JSON.parse(response)
|
57
59
|
rescue Exception => e
|
58
60
|
response = {}
|
59
61
|
end
|
60
|
-
|
62
|
+
|
61
63
|
# Process response
|
62
64
|
if response['valid'] && response['recheck']
|
63
65
|
self.recheck = Time.iso8601(response['recheck'])
|
64
66
|
return true
|
65
67
|
end
|
66
|
-
|
68
|
+
|
67
69
|
return false
|
68
70
|
end
|
69
|
-
|
71
|
+
|
70
72
|
# Check whether this mno session is valid or not
|
71
73
|
# Return true if SLO is disabled (via sso.slo_enabled config
|
72
74
|
# param)
|
@@ -81,8 +83,8 @@ module Maestrano
|
|
81
83
|
def valid?(opts = {})
|
82
84
|
return true unless Maestrano[self.class.preset].param('sso.slo_enabled')
|
83
85
|
return true if opts[:if_session] && (!self.session || (!self.session[:maestrano] && !self.session['maestrano']))
|
84
|
-
return false unless self.session
|
85
|
-
|
86
|
+
return false unless self.session
|
87
|
+
|
86
88
|
if self.remote_check_required?
|
87
89
|
if perform_remote_check
|
88
90
|
self.save
|
@@ -93,16 +95,17 @@ module Maestrano
|
|
93
95
|
end
|
94
96
|
return true
|
95
97
|
end
|
96
|
-
|
98
|
+
|
97
99
|
def save
|
98
100
|
self.session[:maestrano] = Base64.encode64({
|
99
101
|
uid: self.uid,
|
100
102
|
session: self.session_token,
|
101
103
|
session_recheck: self.recheck.utc.iso8601,
|
102
|
-
group_uid: self.group_uid
|
104
|
+
group_uid: self.group_uid,
|
105
|
+
preset: self.preset
|
103
106
|
}.to_json)
|
104
107
|
end
|
105
|
-
|
108
|
+
|
106
109
|
end
|
107
110
|
end
|
108
|
-
end
|
111
|
+
end
|
data/lib/maestrano/version.rb
CHANGED