saml_camel 1.0.5 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e845e0da15a5db2349b6572ccdb63fc432caa961
4
- data.tar.gz: 194faeb1fe2914fe1bb5ff83248cd5c45f09e958
2
+ SHA256:
3
+ metadata.gz: 8883a80247875fe73ecb79704abaf9b0a249924b2b8df5582e6767ee49a3428b
4
+ data.tar.gz: 411a4be30453d4bb258065096062a6c6ce0cb89eca2ad852d9582eac8f978c1e
5
5
  SHA512:
6
- metadata.gz: f9d873a64b44da5816d20450df7fc9f0f202abe7f2986193c16abd4bf0c00f7ae94d792e43f81df36107a1fabb52de9d38b4189c4ab0c619f5ba53bdd737d01f
7
- data.tar.gz: 36d2840f7e8ddd89f1e155634f172a3fa0583aa47e533108078086588d617a96bd8c73c8b592bb41fa07f95cb8a9650412626450471f8bdac4192435f621d0e1
6
+ metadata.gz: c2f154ff374ab4aa74deaf11623b693b2373a872b1a6a5dcea008fee4914b32202e8f0cfbd1978934af6355787d5fc7cbdf89d7372d3e01c7eb7761ef7fcc007
7
+ data.tar.gz: 59eb90047c7ef00faf38ca5bef9a7b371ae9de4f677c2f12d94cf8305ed1ebb0b835c2f99c7bd93c3a438d6bce0d02ef1c242c0f2a98a7e338fa5c205145031e
data/README.md CHANGED
@@ -37,7 +37,7 @@ $ bundle
37
37
  config.cache_store = :memory_store
38
38
  ```
39
39
 
40
- **NOTE:** use the cache_store most appropriate for your situation. It may make more sense to use a file store, or a redis server. For example it may not make sense to cache in memory in production. You can read more about rails caching behavior here http://guides.rubyonrails.org/caching_with_rails.html
40
+ **NOTE:** use the cache_store most appropriate for your situation. **It may make more sense to use a file store, or a redis server. If you are running an app across multiple instances do not use memory_store**. For example it may not make sense to cache in memory in production. You can read more about rails caching behavior here http://guides.rubyonrails.org/caching_with_rails.html
41
41
 
42
42
  2. run `rake saml_camel:generate_saml` to generate metadata files for the development, test, and production environment. You can also specify a custom environment like this `rake saml_camel:generate_saml environment=acceptance`
43
43
 
@@ -72,6 +72,22 @@ Identity Provider(idp) to recognize your app. Typically it should take the form
72
72
  end
73
73
  ```
74
74
 
75
+ 6. you can also pass in an optional `RelayState:` keyword argument to provide the RelayState parameter.
76
+ The relay state parameter will be played back to you in the response parameters from the idp. This can be useful if you want to redirect users to different endpoints after the response goes to the ACS.
77
+ ```ruby
78
+ class DashboardController < ApplicationController
79
+ before_action except: [:home] do
80
+ saml_protect(relay_state: "some-value-I-want-in-the-response")
81
+ end
82
+
83
+ def home
84
+ end
85
+
86
+ def index
87
+ end
88
+ end
89
+ ```
90
+
75
91
  7. to logout simply make a post to `localhost:3000/saml/logout`. This will kill the local saml session, and the session with the identity provider.
76
92
 
77
93
  7. response attributes found in `session[:saml_attributes]`
@@ -82,6 +98,9 @@ Identity Provider(idp) to recognize your app. Typically it should take the form
82
98
 
83
99
  9. Logging is turned on by default. Logging is configured in `config/saml/development/settings.json`. To utilize logging saml_logging should be set to true (default), and primary_id must have a value. primary_id is the saml attribute you consider to be a primary identifier for a user
84
100
 
101
+ 11. Clock drift can be adjusted by setting the `clock_drift` in `config/saml/development/settings.json`
102
+ The value should be an integer(which translates to seconds). For example a value of 60 will allow clock drift of 1 minute. It is recommended that if you set this value, it should be set as low as possible for security purposes.
103
+
85
104
 
86
105
  10. Convenience Endpoints (assuming enginte is mounted to `saml` path):
87
106
  - `/saml/attributes` view attributes being passed through
@@ -101,6 +120,7 @@ Identity Provider(idp) to recognize your app. Typically it should take the form
101
120
  "primary_id": "eduPersonPrincipalName",
102
121
  "sp_session_timeout": 1,
103
122
  "sp_session_lifetime": 8,
123
+ "clock_drift": false,
104
124
  "test_auth_path": true,
105
125
  "saml_logging": true,
106
126
  "debug": false,
@@ -17,8 +17,8 @@ module SamlCamel::SamlService # rubocop:disable Style/ClassAndModuleChildren
17
17
  end
18
18
 
19
19
  # TODO: refactor
20
- def saml_protect # rubocop:disable Metrics/MethodLength, Metrics/AbcSize:
21
-
20
+ def saml_protect(relay_state: nil) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize:
21
+ relay_state = relay_state ? "&RelayState=#{CGI.escape(relay_state)}" : ""
22
22
  #TODO move this
23
23
  begin
24
24
  settings = JSON.parse(File.read("config/saml/#{Rails.env}/settings.json"))
@@ -28,6 +28,8 @@ module SamlCamel::SamlService # rubocop:disable Style/ClassAndModuleChildren
28
28
  end
29
29
 
30
30
  user_cache = cache_available?(Rails.cache.fetch(session[:saml_session_id])) if session[:saml_session_id]
31
+
32
+ #user has an active saml_session_id and cache was found using that session id
31
33
  if session[:saml_session_id] && user_cache
32
34
  SamlCamel::Logging.debug('Saml Session and User Cache Found.') if sp_debug
33
35
  SamlCamel::Logging.debug("SAML session id: #{session[:saml_session_id]} | Cache: #{user_cache}") if sp_debug
@@ -36,14 +38,22 @@ module SamlCamel::SamlService # rubocop:disable Style/ClassAndModuleChildren
36
38
  saml_attributes: session[:saml_attributes]
37
39
  )
38
40
  session[:sp_session] = sp.validate_sp_session(session[:sp_session], request.remote_ip)
41
+
42
+ # run this if a user does not have an sp session, or if the response was a failure
39
43
  unless session[:saml_response_success] || session[:sp_session]
40
44
  SamlCamel::Logging.debug('SAML response not successful or no sp session not valid. Generating new request.') if sp_debug
41
45
  SamlCamel::Logging.debug("SAML response: #{session[:saml_response_success]}") if sp_debug
42
46
  SamlCamel::Logging.debug("SP session #{session[:sp_session]}") if sp_debug
47
+
48
+ session[:saml_session_id] = SamlCamel::ServiceProvider.generate_permit_key
49
+ saml_request_url = SamlCamel::ServiceProvider.new(
50
+ cache_permit_key: session[:saml_session_id].to_sym
51
+ ).generate_saml_request(request)
43
52
 
44
- saml_request_url = sp.generate_saml_request(request)
45
- redirect_to(saml_request_url)
53
+ redirect_to(saml_request_url + relay_state)
46
54
  end
55
+
56
+ # user did not have a saml_session_id and an active cache
47
57
  else
48
58
  SamlCamel::Logging.debug('User Cache or saml session id not found. Generating new request.') if sp_debug
49
59
  SamlCamel::Logging.debug("SAML session id: #{session[:saml_session_id]} | Cache: #{user_cache}") if sp_debug
@@ -52,7 +62,7 @@ module SamlCamel::SamlService # rubocop:disable Style/ClassAndModuleChildren
52
62
  saml_request_url = SamlCamel::ServiceProvider.new(
53
63
  cache_permit_key: session[:saml_session_id].to_sym
54
64
  ).generate_saml_request(request)
55
- redirect_to(saml_request_url)
65
+ redirect_to(saml_request_url + relay_state)
56
66
  end
57
67
  session[:saml_response_success] = nil # keeps us from looping
58
68
  end
@@ -25,13 +25,35 @@ module SamlCamel
25
25
 
26
26
  # ol OneLogin
27
27
  def self.ol_response(idp_response, raw_response: false)
28
+ clock_drift = set_clock_drift
28
29
  settings = SamlCamel::Transaction.saml_settings(raw_response: raw_response)
29
- response = OneLogin::RubySaml::Response.new(idp_response, settings: settings)
30
+ if clock_drift
31
+ response = OneLogin::RubySaml::Response.new(idp_response, settings: settings, allowed_clock_drift: 2.second)
32
+ else
33
+ response = OneLogin::RubySaml::Response.new(idp_response, settings: settings)
34
+ end
30
35
  response.settings = settings
31
-
32
36
  response
33
37
  end
34
38
 
39
+ #if user configured clock drift, check configuration
40
+ # ruby saml default I "think" is 180 sec based of the java saml pull request https://github.com/onelogin/java-saml/issues/89
41
+ # however when I pulled the ruby-saml gem and searched the repo it looks like there is no clock drift by default
42
+ def self.set_clock_drift
43
+ clock_drift = SP_SETTINGS.dig('settings','clock_drift')
44
+ return false if !clock_drift
45
+
46
+ # clock drift must either be an integer of falsey, classes have come through
47
+ # differently (fixnum, bignum, integer), using a regex instead to see if that
48
+ # addresses some issues https://stackoverflow.com/questions/16774064/regular-expression-for-whole-numbers-and-integers
49
+ if !clock_drift.to_s.match(/(?<![-.])\b[0-9]+\b(?!\.[0-9])/)
50
+ SamlCamel::Logging.clock_drift(clock_drift)
51
+ raise "Clock Drift Incorrectly Configured."
52
+ end
53
+ clock_drift.to_i
54
+ end
55
+
56
+
35
57
  # TODO: method too complex
36
58
  def check_expired_session(sp_session) # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/LineLength
37
59
  sp_timeout = SP_SETTINGS['settings']['sp_session_timeout']
@@ -52,6 +74,7 @@ module SamlCamel
52
74
  end
53
75
 
54
76
  # if the session has timed out remove session, otherwise refresh
77
+ sp_session = sp_session.to_s if sp_session.class != String
55
78
  if (Time.now - Time.parse(sp_session)) < sp_timeout.hour
56
79
  SamlCamel::Logging.debug('Session within timeout, session renewed') if SP_DEBUG
57
80
  Time.now
@@ -116,6 +139,7 @@ module SamlCamel
116
139
  end
117
140
 
118
141
 
142
+
119
143
  # set saml_session lifetime, called if none set
120
144
  # TODO: this may need to be renamed, it's not really setting the lifetime
121
145
  # it's refreshing the last time a user authenticated
@@ -125,6 +149,7 @@ module SamlCamel
125
149
  sp_lifetime = SP_SETTINGS['settings']['sp_session_lifetime']
126
150
 
127
151
  SamlCamel::Logging.debug("Setting lifetime of session. Lifetime of #{sp_lifetime} hours") if SP_DEBUG
152
+ Rails.cache.delete(@cache_permit_key)
128
153
  Rails.cache.fetch(@cache_permit_key, expires_in: sp_lifetime.hours) do
129
154
  user_saml_cache
130
155
  end
@@ -4,7 +4,11 @@ module SamlCamel
4
4
  # handle shib attributes
5
5
  class Shib
6
6
  if SP_SETTINGS.dig('settings','shib_module')
7
- ATTRIBUTE_MAP = JSON.parse(File.read('config/saml/shibboleth.json'))
7
+ if File.file?('config/saml/shibboleth.json') #keep backwards compatiblity
8
+ ATTRIBUTE_MAP = JSON.parse(File.read('config/saml/shibboleth.json'))
9
+ else
10
+ ATTRIBUTE_MAP = JSON.parse(File.read("config/saml/#{Rails.env}/settings.json"))["attribute_map"]
11
+ end
8
12
  end
9
13
 
10
14
  def self.attributes(request)
@@ -1,2 +1,4 @@
1
- <h1>Failure in SAML Response</h1>
2
- <h3><%= @error %></h3>
1
+ <div id="samlcamel-error-container">
2
+ <h1 id='samlcamel-error-head'>Failure in SAML Response</h1>
3
+ <h3 id='samlcamel-error-msg'><%= @error %></h3>
4
+ </div>
@@ -1,28 +1,27 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIEuTCCA6GgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCVVMx
2
+ MIIEmjCCA4KgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMCVVMx
3
3
  FzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQHDAZEdXJoYW0xGDAWBgNV
4
- BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMR0wGwYDVQQDDBRzYW1s
5
- IGNhbWVsIGR1bW15IGFwcDEdMBsGCSqGSIb3DQEJARYOZGExMjlAZHVrZS5lZHUw
6
- HhcNMTgwNTIyMTcxMDMwWhcNMTkwNTIyMTcxMDMwWjCBnTELMAkGA1UEBhMCVVMx
7
- FzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQHDAZEdXJoYW0xGDAWBgNV
8
- BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMR0wGwYDVQQDDBRzYW1s
9
- IGNhbWVsIGR1bW15IGFwcDEdMBsGCSqGSIb3DQEJARYOZGExMjlAZHVrZS5lZHUw
10
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OHs74gT5AmdSsLgHETvX
11
- 50+S0NgWp5dcovfuMYFV+1CFX1MhgjhBQSwkA9U/0pfKf/eoU18O2gI2y46OK8j2
12
- e5oyUuKv1UQWe2RHKvxvNrwvvUVcLY4mJDZf0d4q6EyTVo2aWHwoskxnQpjbusgp
13
- Vq178Jfaeu/QaiBtq82vPlu0tfCeOXIyEdyRiOyc2bQvS5MW6FvzWtgatiNUnJJe
14
- sBM/JUiFOvf3qG7LHEzpaIBmoHBwxG5b3yjrGgGTdw+5gyXdPEwEeiTddMvYlXWM
15
- t+VMoTmsaBxrXRJBvpLxGWHZRb0VcoVTqWjcKVD/hR0A7H6ogaoOatHDWM41b3ZL
16
- AgMBAAGjggEAMIH9MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGh/Y36w7wcL
17
- nLXFC0dUpboAAV+ZMIHKBgNVHSMEgcIwgb+AFGh/Y36w7wcLnLXFC0dUpboAAV+Z
18
- oYGjpIGgMIGdMQswCQYDVQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEx
19
- DzANBgNVBAcMBkR1cmhhbTEYMBYGA1UECgwPRHVrZSBVbml2ZXJzaXR5MQwwCgYD
20
- VQQLDANPSVQxHTAbBgNVBAMMFHNhbWwgY2FtZWwgZHVtbXkgYXBwMR0wGwYJKoZI
21
- hvcNAQkBFg5kYTEyOUBkdWtlLmVkdYIBADANBgkqhkiG9w0BAQsFAAOCAQEAFE/X
22
- DPipapLFDnu2jCMR4lhDeEF2Pm1DIibiy6ZvmzCstj++MYOI7gKkUgeUUhFTEQIV
23
- fZIo5gIWkyoPVOwGALLTme01Tdk3Mul4pV0iqMn4k3F9NsC9wRy4WR2yPF9GYa/e
24
- ktK+ZBYt/2SZA4vS5q63jsMC0TjkrTGJokXohwScWDc4kIFfvU6biWW7zBCVfpaa
25
- YfsLYNBTbZ7VqEVFzcpYv8LBTOYoToAS5+yuAwrIdPEfqx3R4tIwGCik4tSByQFO
26
- i/VvEL5rTWhmUrKPh1hriPVYZ9gW2Mk87Snlyswsqv5d8+ITVgF+RL+cutUA29C+
27
- moSLPLaWINlhqvuRXw==
4
+ BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMRMwEQYDVQQDDApkdW1t
5
+ eWNhbWVsMR0wGwYJKoZIhvcNAQkBFg5kYTEyOUBkdWtlLmVkdTAeFw0xODEwMDEx
6
+ OTA5MzFaFw0xOTEwMDExOTA5MzFaMIGTMQswCQYDVQQGEwJVUzEXMBUGA1UECAwO
7
+ Tm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYGA1UECgwPRHVrZSBV
8
+ bml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1bW15Y2FtZWwxHTAb
9
+ BgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1MIIBIjANBgkqhkiG9w0BAQEFAAOC
10
+ AQ8AMIIBCgKCAQEAxfEBOBim4MNyaqgTxKUJS9Fc6OTIDl/T4JkCRYw0dn96tHU4
11
+ uSFuTXXyeGSNW8xJg5ky5x9/xIusZjfyWb3sboGJRMaMT01QqsJA3+Ty+XSSpWc6
12
+ GXPO/sCYKJmIAXNYtQDXbilkD5TQweNyL3sgEpsMXM7CUjlu2Iw6eJpVTbF0eEgV
13
+ /tDOZFy/EdmZltOgT/xLbm2hypRdjebXZboUj3dO7I5wDH8OdwF6HcwhwRSEkZQG
14
+ EAaWIhbt5Zppzl737ONqzkKKp6d67vpiHV/KU5iyjOkXm1r1ZJtCQJJiM/OGK6rk
15
+ pC78q6USM5CZzOGXw/qN3Gwnkgkme/5h7LNx2QIDAQABo4H2MIHzMA8GA1UdEwEB
16
+ /wQFMAMBAf8wHQYDVR0OBBYEFF/usaGeNEdFtSpp+AAsBDb1JZ/mMIHABgNVHSME
17
+ gbgwgbWAFF/usaGeNEdFtSpp+AAsBDb1JZ/moYGZpIGWMIGTMQswCQYDVQQGEwJV
18
+ UzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYG
19
+ A1UECgwPRHVrZSBVbml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1
20
+ bW15Y2FtZWwxHTAbBgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1ggEAMA0GCSqG
21
+ SIb3DQEBCwUAA4IBAQCB3HHMBOr3Ju7AhM+I0ngM9T+mVI/tOninpHVqUIp0hftM
22
+ eWYRkIRXhND2ScqnbOgeYGtWirIu/UWdEcI65fD1HVorcQjiW3cEB684tZAD/sh7
23
+ OJoawAAyYOIF7oFtFO5tl1RVpZJM2wBKVnUMpxtG/g6El8TwRwo6dvJpKzu10ypP
24
+ QVPIhzE+3BoOCGoz8eVF3WydBcwmoc5bRixZuNYwAC2XMPGW+S58MxSrhaLmfRu7
25
+ RISpYbgk7jI92S7OJS61c5ZTZgn6H/Gr3u8sV0fn8cLGHIoD2+DUolw7VXN31M8A
26
+ g2KwRSTWaPLf6Be9On3pgGRpd1jZg00P/Gv4wnKe
28
27
  -----END CERTIFICATE-----
@@ -1,27 +1,27 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- qAtYydOaBqL50b4K+5CVEBzVb1Qf/DKhCbBeYvnwAcUVT+t5lDGUh+54pLTHmeGZ
11
- 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
- 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
- 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
- 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
- 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
- SuHwIooIyiW2/oDjoqCrdtgOLXzdOK2OSDcY+jARVkOA8N0ingPOb18RLOTmjGk5
17
- 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
- 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
- 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
- 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
- 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
- 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
- ryxxXppqlUDjrBvOVXKC/1syhRTUtRVsmiA1joHNrWulsA2bLAuwOMdvZzgN5hOe
24
- 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
- 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
- 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
27
27
  -----END RSA PRIVATE KEY-----
@@ -1,25 +1,27 @@
1
- MIIEWjCCA0KgAwIBAgIJAP1rB/FjRgy6MA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNV
2
- BAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTEPMA0GA1UEBxMGRHVyaGFt
3
- MRgwFgYDVQQKEw9EdWtlIFVuaXZlcnNpdHkxDDAKBgNVBAsTA09JVDEaMBgGA1UE
4
- AxMRc2hpYi5vaXQuZHVrZS5lZHUwHhcNMTAwOTA5MTI0NDU1WhcNMjgwOTA0MTI0
5
- NDU1WjB7MQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzAN
6
- BgNVBAcTBkR1cmhhbTEYMBYGA1UEChMPRHVrZSBVbml2ZXJzaXR5MQwwCgYDVQQL
7
- EwNPSVQxGjAYBgNVBAMTEXNoaWIub2l0LmR1a2UuZWR1MIIBIjANBgkqhkiG9w0B
8
- AQEFAAOCAQ8AMIIBCgKCAQEAt+hnl6gSRi0Y8VuNl6PCPYejj7VfVs/y8bRa5zAY
9
- RHwb75+vBSs2j1yeUcSore9Ba5Ni7v947V34afRMGRPOqr4TEDZxU+1Bg0zAvSrR
10
- n4Y8B+zyJuhtOpmOZzTwE9o/Oc+CB4kYV/K0woKZdcoxHJm8TbqBqdxU4fFYUlNU
11
- o4Dr5jRdCSr9MHBOqGWXtQMg16qYNB7StNk4twY29FNnpZwkVTfsE76uVsRMkG8i
12
- 6/RiHpXZ/ioOOqndptbEGdsOIE3ivAJOZdvYwnDe5NnTH06P01HsxH3OOnYqhuG2
13
- J6qdhqoelGeHRG+jfl8YkYXCcKQvja2tJ5G+6iqSN7DP6QIDAQABo4HgMIHdMB0G
14
- A1UdDgQWBBQHYXwB6otkfyMOmUI59j8823hFRDCBrQYDVR0jBIGlMIGigBQHYXwB
15
- 6otkfyMOmUI59j8823hFRKF/pH0wezELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5v
16
- cnRoIENhcm9saW5hMQ8wDQYDVQQHEwZEdXJoYW0xGDAWBgNVBAoTD0R1a2UgVW5p
17
- dmVyc2l0eTEMMAoGA1UECxMDT0lUMRowGAYDVQQDExFzaGliLm9pdC5kdWtlLmVk
18
- dYIJAP1rB/FjRgy6MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAG7q
19
- wJpiSLJbx2gj/cGDYeuBW/CeRGNghjQ/mb076P3WXsRNPAimcXulSUbQkS6eDH4t
20
- Ifvsa0jf4FRsEOwH/x8354/0wyv4RwuavX25kjpmoFn3O+eKokyzsc7/Q2gsm0mv
21
- V8XQo+5b+4we8AFYlAVp26nLeIqAiJM8xZJ9yHuzVL1O4yxIWIKECWHLqY5+1nas
22
- XNiLURrHhsK5pZUPLuhzJFgZuJT62TtnrjJXlrRhJ389VSkh6R64C6ncjNkg6/Cu
23
- tA6SX0infqNRyPRNJK+bnQd1yOP4++tjD/lAPE+5tiD/waI3fArt43ZE/qp7pYMS
24
- 9TEfyQ5QpfRYAUFWXBc=
25
-
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEmjCCA4KgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMCVVMx
3
+ FzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQHDAZEdXJoYW0xGDAWBgNV
4
+ BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMRMwEQYDVQQDDApkdW1t
5
+ eWNhbWVsMR0wGwYJKoZIhvcNAQkBFg5kYTEyOUBkdWtlLmVkdTAeFw0xODEwMDEx
6
+ OTA5MzFaFw0xOTEwMDExOTA5MzFaMIGTMQswCQYDVQQGEwJVUzEXMBUGA1UECAwO
7
+ Tm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYGA1UECgwPRHVrZSBV
8
+ bml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1bW15Y2FtZWwxHTAb
9
+ BgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1MIIBIjANBgkqhkiG9w0BAQEFAAOC
10
+ AQ8AMIIBCgKCAQEAxfEBOBim4MNyaqgTxKUJS9Fc6OTIDl/T4JkCRYw0dn96tHU4
11
+ uSFuTXXyeGSNW8xJg5ky5x9/xIusZjfyWb3sboGJRMaMT01QqsJA3+Ty+XSSpWc6
12
+ GXPO/sCYKJmIAXNYtQDXbilkD5TQweNyL3sgEpsMXM7CUjlu2Iw6eJpVTbF0eEgV
13
+ /tDOZFy/EdmZltOgT/xLbm2hypRdjebXZboUj3dO7I5wDH8OdwF6HcwhwRSEkZQG
14
+ EAaWIhbt5Zppzl737ONqzkKKp6d67vpiHV/KU5iyjOkXm1r1ZJtCQJJiM/OGK6rk
15
+ pC78q6USM5CZzOGXw/qN3Gwnkgkme/5h7LNx2QIDAQABo4H2MIHzMA8GA1UdEwEB
16
+ /wQFMAMBAf8wHQYDVR0OBBYEFF/usaGeNEdFtSpp+AAsBDb1JZ/mMIHABgNVHSME
17
+ gbgwgbWAFF/usaGeNEdFtSpp+AAsBDb1JZ/moYGZpIGWMIGTMQswCQYDVQQGEwJV
18
+ UzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYG
19
+ A1UECgwPRHVrZSBVbml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1
20
+ bW15Y2FtZWwxHTAbBgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1ggEAMA0GCSqG
21
+ SIb3DQEBCwUAA4IBAQCB3HHMBOr3Ju7AhM+I0ngM9T+mVI/tOninpHVqUIp0hftM
22
+ eWYRkIRXhND2ScqnbOgeYGtWirIu/UWdEcI65fD1HVorcQjiW3cEB684tZAD/sh7
23
+ OJoawAAyYOIF7oFtFO5tl1RVpZJM2wBKVnUMpxtG/g6El8TwRwo6dvJpKzu10ypP
24
+ QVPIhzE+3BoOCGoz8eVF3WydBcwmoc5bRixZuNYwAC2XMPGW+S58MxSrhaLmfRu7
25
+ RISpYbgk7jI92S7OJS61c5ZTZgn6H/Gr3u8sV0fn8cLGHIoD2+DUolw7VXN31M8A
26
+ g2KwRSTWaPLf6Be9On3pgGRpd1jZg00P/Gv4wnKe
27
+ -----END CERTIFICATE-----
@@ -1,27 +1,27 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- a8iKT7GoHt2YNZKFSEzVKJ1R6cVLXvUJZihvsSivGBd6cLuzplWgwEQS2gBBsWJ6
21
- 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
- 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
- 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
- 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
- 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
- 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
27
27
  -----END RSA PRIVATE KEY-----
@@ -1,28 +1,27 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIEuTCCA6GgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCVVMx
2
+ MIIEmjCCA4KgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMCVVMx
3
3
  FzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQHDAZEdXJoYW0xGDAWBgNV
4
- BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMR0wGwYDVQQDDBRzYW1s
5
- IGNhbWVsIGR1bW15IGFwcDEdMBsGCSqGSIb3DQEJARYOZGExMjlAZHVrZS5lZHUw
6
- HhcNMTgwNTIyMTcxMDMwWhcNMTkwNTIyMTcxMDMwWjCBnTELMAkGA1UEBhMCVVMx
7
- FzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQHDAZEdXJoYW0xGDAWBgNV
8
- BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMR0wGwYDVQQDDBRzYW1s
9
- IGNhbWVsIGR1bW15IGFwcDEdMBsGCSqGSIb3DQEJARYOZGExMjlAZHVrZS5lZHUw
10
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OHs74gT5AmdSsLgHETvX
11
- 50+S0NgWp5dcovfuMYFV+1CFX1MhgjhBQSwkA9U/0pfKf/eoU18O2gI2y46OK8j2
12
- e5oyUuKv1UQWe2RHKvxvNrwvvUVcLY4mJDZf0d4q6EyTVo2aWHwoskxnQpjbusgp
13
- Vq178Jfaeu/QaiBtq82vPlu0tfCeOXIyEdyRiOyc2bQvS5MW6FvzWtgatiNUnJJe
14
- sBM/JUiFOvf3qG7LHEzpaIBmoHBwxG5b3yjrGgGTdw+5gyXdPEwEeiTddMvYlXWM
15
- t+VMoTmsaBxrXRJBvpLxGWHZRb0VcoVTqWjcKVD/hR0A7H6ogaoOatHDWM41b3ZL
16
- AgMBAAGjggEAMIH9MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGh/Y36w7wcL
17
- nLXFC0dUpboAAV+ZMIHKBgNVHSMEgcIwgb+AFGh/Y36w7wcLnLXFC0dUpboAAV+Z
18
- oYGjpIGgMIGdMQswCQYDVQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEx
19
- DzANBgNVBAcMBkR1cmhhbTEYMBYGA1UECgwPRHVrZSBVbml2ZXJzaXR5MQwwCgYD
20
- VQQLDANPSVQxHTAbBgNVBAMMFHNhbWwgY2FtZWwgZHVtbXkgYXBwMR0wGwYJKoZI
21
- hvcNAQkBFg5kYTEyOUBkdWtlLmVkdYIBADANBgkqhkiG9w0BAQsFAAOCAQEAFE/X
22
- DPipapLFDnu2jCMR4lhDeEF2Pm1DIibiy6ZvmzCstj++MYOI7gKkUgeUUhFTEQIV
23
- fZIo5gIWkyoPVOwGALLTme01Tdk3Mul4pV0iqMn4k3F9NsC9wRy4WR2yPF9GYa/e
24
- ktK+ZBYt/2SZA4vS5q63jsMC0TjkrTGJokXohwScWDc4kIFfvU6biWW7zBCVfpaa
25
- YfsLYNBTbZ7VqEVFzcpYv8LBTOYoToAS5+yuAwrIdPEfqx3R4tIwGCik4tSByQFO
26
- i/VvEL5rTWhmUrKPh1hriPVYZ9gW2Mk87Snlyswsqv5d8+ITVgF+RL+cutUA29C+
27
- moSLPLaWINlhqvuRXw==
4
+ BAoMD0R1a2UgVW5pdmVyc2l0eTEMMAoGA1UECwwDT0lUMRMwEQYDVQQDDApkdW1t
5
+ eWNhbWVsMR0wGwYJKoZIhvcNAQkBFg5kYTEyOUBkdWtlLmVkdTAeFw0xODEwMDEx
6
+ OTA5MzFaFw0xOTEwMDExOTA5MzFaMIGTMQswCQYDVQQGEwJVUzEXMBUGA1UECAwO
7
+ Tm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYGA1UECgwPRHVrZSBV
8
+ bml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1bW15Y2FtZWwxHTAb
9
+ BgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1MIIBIjANBgkqhkiG9w0BAQEFAAOC
10
+ AQ8AMIIBCgKCAQEAxfEBOBim4MNyaqgTxKUJS9Fc6OTIDl/T4JkCRYw0dn96tHU4
11
+ uSFuTXXyeGSNW8xJg5ky5x9/xIusZjfyWb3sboGJRMaMT01QqsJA3+Ty+XSSpWc6
12
+ GXPO/sCYKJmIAXNYtQDXbilkD5TQweNyL3sgEpsMXM7CUjlu2Iw6eJpVTbF0eEgV
13
+ /tDOZFy/EdmZltOgT/xLbm2hypRdjebXZboUj3dO7I5wDH8OdwF6HcwhwRSEkZQG
14
+ EAaWIhbt5Zppzl737ONqzkKKp6d67vpiHV/KU5iyjOkXm1r1ZJtCQJJiM/OGK6rk
15
+ pC78q6USM5CZzOGXw/qN3Gwnkgkme/5h7LNx2QIDAQABo4H2MIHzMA8GA1UdEwEB
16
+ /wQFMAMBAf8wHQYDVR0OBBYEFF/usaGeNEdFtSpp+AAsBDb1JZ/mMIHABgNVHSME
17
+ gbgwgbWAFF/usaGeNEdFtSpp+AAsBDb1JZ/moYGZpIGWMIGTMQswCQYDVQQGEwJV
18
+ UzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcMBkR1cmhhbTEYMBYG
19
+ A1UECgwPRHVrZSBVbml2ZXJzaXR5MQwwCgYDVQQLDANPSVQxEzARBgNVBAMMCmR1
20
+ bW15Y2FtZWwxHTAbBgkqhkiG9w0BCQEWDmRhMTI5QGR1a2UuZWR1ggEAMA0GCSqG
21
+ SIb3DQEBCwUAA4IBAQCB3HHMBOr3Ju7AhM+I0ngM9T+mVI/tOninpHVqUIp0hftM
22
+ eWYRkIRXhND2ScqnbOgeYGtWirIu/UWdEcI65fD1HVorcQjiW3cEB684tZAD/sh7
23
+ OJoawAAyYOIF7oFtFO5tl1RVpZJM2wBKVnUMpxtG/g6El8TwRwo6dvJpKzu10ypP
24
+ QVPIhzE+3BoOCGoz8eVF3WydBcwmoc5bRixZuNYwAC2XMPGW+S58MxSrhaLmfRu7
25
+ RISpYbgk7jI92S7OJS61c5ZTZgn6H/Gr3u8sV0fn8cLGHIoD2+DUolw7VXN31M8A
26
+ g2KwRSTWaPLf6Be9On3pgGRpd1jZg00P/Gv4wnKe
28
27
  -----END CERTIFICATE-----
@@ -1,27 +1,27 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- q3GOgOrP+nvRya8HLHKm0rf7+sU2mGIsSrVYtI0CgYBzQUIoL5FPW0e4XQFG/FJx
19
- 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
- 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
- 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
- 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
- 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
- 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
- woD2L56tjtVyFH8LQz1sU7LroSc8XF2joZOdQePrnyTVUISoMiTqaXMPIO6l6pez
26
- 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
27
27
  -----END RSA PRIVATE KEY-----
@@ -87,6 +87,12 @@ module SamlCamel
87
87
  LOGGER.debug('Unknown Error During relay state logging. IP check') if SHOULD_LOG
88
88
  end
89
89
 
90
+ def self.clock_drift(clock_drift)
91
+ LOGGER.debug("Clock drift has not been configured. Must either be false, or an integer. Currently configured as #{clock_drift}(#{clock_drift.class})") if SHOULD_LOG
92
+ rescue StandardError
93
+ LOGGER.debug('Unknown Error During Debug') if SHOULD_LOG
94
+ end
95
+
90
96
  def self.debug(message)
91
97
  LOGGER.debug(message) if SHOULD_LOG
92
98
  rescue StandardError
@@ -108,6 +114,7 @@ module SamlCamel
108
114
  end
109
115
  end
110
116
 
117
+ #no occurances of this being used, may be able to remove? 10/17/2018
111
118
  def self.saml_state(data)
112
119
  if SHOULD_LOG
113
120
  LOGGER.info("Stored Relay: #{data[:stored_relay]} |
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SamlCamel
4
- VERSION = '1.0.5'
4
+ VERSION = '1.0.10'
5
5
  end
@@ -71,6 +71,7 @@ tA6SX0infqNRyPRNJK+bnQd1yOP4++tjD/lAPE+5tiD/waI3fArt43ZE/qp7pYMS
71
71
  primary_id: 'eduPersonPrincipalName',
72
72
  sp_session_timeout: 1,
73
73
  sp_session_lifetime: 8,
74
+ clock_drift: false,
74
75
  test_auth_path: true,
75
76
  saml_logging: true,
76
77
  debug: false,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saml_camel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'Danai Adkisson '
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-13 00:00:00.000000000 Z
11
+ date: 2020-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -139,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.6.11
142
+ rubygems_version: 3.1.2
144
143
  signing_key:
145
144
  specification_version: 4
146
145
  summary: SAML tool wrapping onelogin/rubysaml