libsaml 2.1.6 → 2.1.7
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/saml.rb +1 -0
- data/lib/saml/bindings/http_artifact.rb +5 -3
- data/lib/saml/bindings/http_post.rb +5 -2
- data/lib/saml/bindings/http_redirect.rb +4 -2
- data/lib/saml/bindings/soap.rb +6 -3
- data/lib/saml/notification.rb +55 -0
- data/lib/saml/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f0ad6ec3944e2e6c2656605f22859cf6de287a6
|
4
|
+
data.tar.gz: 93f72e0c10f8eeae202a550f25b607ca7c6518b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 199243697919b1cbc4676c75bd54822feec568b567551640729e1774e229a06748338be453d5fdae013722ca0f7d771f49fb15e08150707fc9ff38c8348ee741
|
7
|
+
data.tar.gz: e32fef49de53c91fa57d3d5fccb670ae1457d7d5a03caddc61fd2e3bc016e637b8e2bdd58702ee67687780edc0f4d6f0a4824e924f09781adf2c1df23233de7b
|
data/lib/saml.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
module Saml
|
2
2
|
module Bindings
|
3
3
|
class HTTPArtifact
|
4
|
+
include Saml::Notification
|
4
5
|
|
5
6
|
class << self
|
6
7
|
# @param [Saml::ArtifactResponse] artifact_response
|
7
8
|
def create_response_xml(artifact_response)
|
8
|
-
Saml::Util.sign_xml(artifact_response, :soap)
|
9
|
+
notify('create_response', Saml::Util.sign_xml(artifact_response, :soap))
|
9
10
|
end
|
10
11
|
|
11
12
|
def create_response(artifact_response)
|
@@ -23,7 +24,7 @@ module Saml
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def receive_message(request)
|
26
|
-
raw_xml = request.body.dup.read
|
27
|
+
raw_xml = notify('receive_message', request.body.dup.read)
|
27
28
|
artifact_resolve = Saml::ArtifactResolve.parse(raw_xml, single: true)
|
28
29
|
|
29
30
|
Saml::Util.verify_xml(artifact_resolve, raw_xml)
|
@@ -33,9 +34,10 @@ module Saml
|
|
33
34
|
artifact = request.params["SAMLart"]
|
34
35
|
artifact_resolve = Saml::ArtifactResolve.new(artifact: artifact, destination: location)
|
35
36
|
|
36
|
-
response = Saml::Util.post(location, Saml::Util.sign_xml(artifact_resolve, :soap))
|
37
|
+
response = Saml::Util.post(location, notify('create_post', Saml::Util.sign_xml(artifact_resolve, :soap)))
|
37
38
|
|
38
39
|
if response.code == "200"
|
40
|
+
notify('receive_response', response.body)
|
39
41
|
artifact_response = Saml::ArtifactResponse.parse(response.body, single: true)
|
40
42
|
verified_artifact_response = Saml::Util.verify_xml(artifact_response, response.body)
|
41
43
|
|
@@ -1,11 +1,13 @@
|
|
1
1
|
module Saml
|
2
2
|
module Bindings
|
3
3
|
class HTTPPost
|
4
|
+
include Saml::Notification
|
5
|
+
|
4
6
|
class << self
|
5
7
|
def create_form_attributes(message, options = {})
|
6
8
|
param = message.is_a?(Saml::ComplexTypes::StatusResponseType) ? "SAMLResponse" : "SAMLRequest"
|
7
9
|
|
8
|
-
xml = Saml::Util.sign_xml(message)
|
10
|
+
xml = notify('create_message', Saml::Util.sign_xml(message))
|
9
11
|
|
10
12
|
variables = {}
|
11
13
|
variables[param] = Saml::Encoding.encode_64(xml)
|
@@ -19,6 +21,7 @@ module Saml
|
|
19
21
|
|
20
22
|
def receive_message(request, type)
|
21
23
|
message = Saml::Encoding.decode_64(request.params["SAMLRequest"] || request.params["SAMLResponse"])
|
24
|
+
notify('receive_message', message)
|
22
25
|
request_or_response = Saml.parse_message(message, type)
|
23
26
|
|
24
27
|
verified_request_or_response = Saml::Util.verify_xml(request_or_response, message)
|
@@ -28,4 +31,4 @@ module Saml
|
|
28
31
|
end
|
29
32
|
end
|
30
33
|
end
|
31
|
-
end
|
34
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Saml
|
2
2
|
module Bindings
|
3
3
|
class HTTPRedirect
|
4
|
+
include Saml::Notification
|
5
|
+
|
4
6
|
class << self
|
5
7
|
def create_url(request_or_response, options = {})
|
6
8
|
options[:signature_algorithm] ||= 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
|
@@ -26,7 +28,7 @@ module Saml
|
|
26
28
|
private
|
27
29
|
|
28
30
|
def parse_request_or_response(type, params)
|
29
|
-
message = decode_message(params["SAMLRequest"] || params["SAMLResponse"])
|
31
|
+
message = notify('receive_message', decode_message(params["SAMLRequest"] || params["SAMLResponse"]))
|
30
32
|
|
31
33
|
Saml.parse_message(message, type)
|
32
34
|
end
|
@@ -73,7 +75,7 @@ module Saml
|
|
73
75
|
end
|
74
76
|
|
75
77
|
def encoded_message
|
76
|
-
Saml::Encoding.encode_64(Saml::Encoding.encode_gzip(request_or_response.to_xml))
|
78
|
+
Saml::Encoding.encode_64(Saml::Encoding.encode_gzip(notify('create_message', request_or_response.to_xml)))
|
77
79
|
end
|
78
80
|
|
79
81
|
def encoded_params
|
data/lib/saml/bindings/soap.rb
CHANGED
@@ -1,21 +1,23 @@
|
|
1
1
|
module Saml
|
2
2
|
module Bindings
|
3
3
|
class SOAP
|
4
|
+
include Saml::Notification
|
5
|
+
|
4
6
|
class << self
|
5
7
|
|
6
8
|
SOAP_ACTION = 'http://www.oasis-open.org/committees/security'
|
7
9
|
|
8
10
|
def create_response_xml(response)
|
9
|
-
Saml::Util.sign_xml(response, :soap)
|
11
|
+
notify('create_response', Saml::Util.sign_xml(response, :soap))
|
10
12
|
end
|
11
13
|
|
12
14
|
def post_message(message, response_type)
|
13
|
-
signed_message = Saml::Util.sign_xml(message, :soap)
|
15
|
+
signed_message = notify('create_post', Saml::Util.sign_xml(message, :soap))
|
14
16
|
|
15
17
|
http_response = Saml::Util.post(message.destination, signed_message, { 'SOAPAction' => SOAP_ACTION } )
|
16
18
|
|
17
19
|
if http_response.code == "200"
|
18
|
-
response = Saml.parse_message(http_response.body, response_type)
|
20
|
+
response = notify('receive_response', Saml.parse_message(http_response.body, response_type))
|
19
21
|
Saml::Util.verify_xml(response, http_response.body)
|
20
22
|
else
|
21
23
|
nil
|
@@ -24,6 +26,7 @@ module Saml
|
|
24
26
|
|
25
27
|
def receive_message(request, type)
|
26
28
|
raw_xml = request.body.dup.read
|
29
|
+
notify('receive_message', raw_xml)
|
27
30
|
message = Saml.parse_message(raw_xml, type)
|
28
31
|
|
29
32
|
Saml::Util.verify_xml(message, raw_xml)
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Saml
|
2
|
+
module Notification
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
def notify(method, result)
|
6
|
+
self.class.notify(method, result)
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def wrap_with_notification(method, instance_method)
|
11
|
+
wrapper = <<-RUBY
|
12
|
+
define_method "#{method}_with_notification" do |*args|
|
13
|
+
notify "#{method}", send("#{method}_without_notification", *args)
|
14
|
+
end
|
15
|
+
alias_method_chain :#{method}, :notification
|
16
|
+
RUBY
|
17
|
+
|
18
|
+
if instance_method
|
19
|
+
class_eval wrapper
|
20
|
+
else
|
21
|
+
class_eval "class << self; #{wrapper}; end"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def notify(method, result)
|
26
|
+
class_name = self.name.demodulize.underscore
|
27
|
+
ActiveSupport::Notifications.instrument "#{method}.#{class_name}.saml", result
|
28
|
+
result
|
29
|
+
end
|
30
|
+
|
31
|
+
def notify_on(*options)
|
32
|
+
options.present? ? @notify_on = options : @notify_on
|
33
|
+
end
|
34
|
+
|
35
|
+
def should_wrap?(name)
|
36
|
+
@notify_on ||= []
|
37
|
+
@exclude ||= []
|
38
|
+
|
39
|
+
return false if @notify_on.exclude?(name) || @exclude.include?(name.to_s)
|
40
|
+
@exclude << "#{name}_with_notification"
|
41
|
+
@exclude << "#{name}_without_notification"
|
42
|
+
@exclude << "#{name}"
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
46
|
+
def singleton_method_added(name)
|
47
|
+
wrap_with_notification(name, false) if should_wrap?(name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def method_added(name)
|
51
|
+
wrap_with_notification(name, true) if should_wrap?(name)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/saml/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libsaml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoist Claassen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -191,6 +191,7 @@ files:
|
|
191
191
|
- lib/saml/encoding.rb
|
192
192
|
- lib/saml/logout_request.rb
|
193
193
|
- lib/saml/logout_response.rb
|
194
|
+
- lib/saml/notification.rb
|
194
195
|
- lib/saml/null_provider.rb
|
195
196
|
- lib/saml/provider.rb
|
196
197
|
- lib/saml/provider_stores/file.rb
|