ruby-saml-mod 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,23 +2,31 @@ module Onelogin::Saml
2
2
  class LogoutResponse
3
3
 
4
4
  attr_reader :settings, :document, :xml, :response
5
- attr_reader :status_code, :status_message
6
- attr_reader :in_response_to, :destination
7
- def initialize(response, settings)
5
+ attr_reader :status_code, :status_message, :issuer
6
+ attr_reader :in_response_to, :destination, :request_id
7
+ def initialize(response, settings=nil)
8
8
  @response = response
9
- @settings = settings
10
9
 
11
10
  @xml = Base64.decode64(@response)
12
11
  zlib = Zlib::Inflate.new(-Zlib::MAX_WBITS)
13
12
  @xml = zlib.inflate(@xml)
14
- @document = XMLSecurity::SignedDocument.new(@xml)
13
+ @document = LibXML::XML::Document.string(@xml)
15
14
 
15
+ @request_id = @document.find_first("/samlp:LogoutResponse", Onelogin::NAMESPACES)['ID'] rescue nil
16
+ @issuer = @document.find_first("/samlp:LogoutResponse/saml:Issuer", Onelogin::NAMESPACES).content rescue nil
16
17
  @in_response_to = @document.find_first("/samlp:LogoutResponse", Onelogin::NAMESPACES)['InResponseTo'] rescue nil
17
18
  @destination = @document.find_first("/samlp:LogoutResponse", Onelogin::NAMESPACES)['Destination'] rescue nil
18
19
  @status_code = @document.find_first("/samlp:LogoutResponse/samlp:Status/samlp:StatusCode", Onelogin::NAMESPACES)['Value'] rescue nil
19
- @status_message = @document.find_first("/samlp:LogoutResponse/samlp:Status/samlp:StatusCode", Onelogin::NAMESPACES).content rescue nil
20
+ @status_message = @document.find_first("/samlp:LogoutResponse/samlp:Status/samlp:StatusMessage", Onelogin::NAMESPACES).content rescue nil
21
+
22
+ process(settings) if settings
20
23
  end
21
-
24
+
25
+ def process(settings)
26
+ @settings = settings
27
+ return unless @response
28
+ end
29
+
22
30
  def logger=(val)
23
31
  @logger = val
24
32
  end
@@ -1,15 +1,15 @@
1
1
  module Onelogin::Saml
2
2
  class Response
3
-
4
- attr_reader :settings, :document, :decrypted_document, :xml, :response
3
+
4
+ attr_accessor :settings
5
+ attr_reader :document, :decrypted_document, :xml, :response
5
6
  attr_reader :name_id, :name_qualifier, :session_index, :saml_attributes
6
7
  attr_reader :status_code, :status_message
7
- attr_reader :in_response_to, :destination
8
+ attr_reader :in_response_to, :destination, :issuer
8
9
  attr_reader :validation_error
9
- def initialize(response, settings)
10
+ def initialize(response, settings=nil)
10
11
  @response = response
11
- @settings = settings
12
-
12
+
13
13
  begin
14
14
  @xml = Base64.decode64(@response)
15
15
  @document = LibXML::XML::Document.string(@xml)
@@ -19,11 +19,21 @@ module Onelogin::Saml
19
19
  @response = nil
20
20
  return
21
21
  end
22
-
22
+
23
+ @issuer = @document.find_first("/samlp:Response/saml:Issuer", Onelogin::NAMESPACES).content rescue nil
24
+ @status_code = @document.find_first("/samlp:Response/samlp:Status/samlp:StatusCode", Onelogin::NAMESPACES)["Value"] rescue nil
25
+
26
+ process(settings) if settings
27
+ end
28
+
29
+ def process(settings)
30
+ @settings = settings
31
+ return unless @response
32
+
23
33
  @decrypted_document = LibXML::XML::Document.document(@document)
24
34
  @decrypted_document.extend(XMLSecurity::SignedDocument)
25
35
  @decrypted_document.decrypt!(@settings)
26
-
36
+
27
37
  @in_response_to = @decrypted_document.find_first("/samlp:Response", Onelogin::NAMESPACES)['InResponseTo'] rescue nil
28
38
  @destination = @decrypted_document.find_first("/samlp:Response", Onelogin::NAMESPACES)['Destination'] rescue nil
29
39
  @name_id = @decrypted_document.find_first("/samlp:Response/saml:Assertion/saml:Subject/saml:NameID", Onelogin::NAMESPACES).content rescue nil
@@ -34,10 +44,9 @@ module Onelogin::Saml
34
44
  end
35
45
  @name_qualifier = @decrypted_document.find_first("/samlp:Response/saml:Assertion/saml:Subject/saml:NameID", Onelogin::NAMESPACES)["NameQualifier"] rescue nil
36
46
  @session_index = @decrypted_document.find_first("/samlp:Response/saml:Assertion/saml:AuthnStatement", Onelogin::NAMESPACES)["SessionIndex"] rescue nil
37
- @status_code = @decrypted_document.find_first("/samlp:Response/samlp:Status/samlp:StatusCode", Onelogin::NAMESPACES)["Value"] rescue nil
38
47
  @status_message = @decrypted_document.find_first("/samlp:Response/samlp:Status/samlp:StatusCode", Onelogin::NAMESPACES).content rescue nil
39
48
  end
40
-
49
+
41
50
  def logger=(val)
42
51
  @logger = val
43
52
  end
@@ -1,9 +1,9 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{ruby-saml-mod}
3
- s.version = "0.1.18"
3
+ s.version = "0.1.19"
4
4
 
5
5
  s.authors = ["OneLogin LLC", "Bracken", "Zach", "Cody", "Jeremy"]
6
- s.date = %q{2012-09-04}
6
+ s.date = %q{2012-09-26}
7
7
  s.extra_rdoc_files = [
8
8
  "LICENSE"
9
9
  ]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-saml-mod
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 18
10
- version: 0.1.18
9
+ - 19
10
+ version: 0.1.19
11
11
  platform: ruby
12
12
  authors:
13
13
  - OneLogin LLC
@@ -19,7 +19,7 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2012-09-04 00:00:00 Z
22
+ date: 2012-09-26 00:00:00 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: libxml-ruby