ruby-saml 0.2.2 → 0.2.3

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.

Potentially problematic release.


This version of ruby-saml might be problematic. Click here for more details.

@@ -2,7 +2,7 @@
2
2
 
3
3
  The Ruby SAML library is for implementing the client side of a SAML authorization, i.e. it provides a means for managing authorization initialization and confirmation requests from identity providers.
4
4
 
5
- SAML authorization is a two step process and you are expected to implement support for both.
5
+ SAML authorization is a two step process and you are expected to implement support for both.
6
6
 
7
7
  == The initialization phase
8
8
 
@@ -27,7 +27,7 @@ Once you've redirected back to the identity provider, it will ensure that the us
27
27
  end
28
28
 
29
29
  In the above there are a few assumptions in place, one being that the response.name_id is an email address. This is all handled with how you specify the settings that are in play via the saml_settings method. That could be implemented along the lines of this:
30
-
30
+
31
31
  def saml_settings
32
32
  settings = Onelogin::Saml::Settings.new
33
33
 
@@ -48,29 +48,29 @@ What's left at this point, is to wrap it all up in a controller and point the in
48
48
  request = Onelogin::Saml::Authrequest.new
49
49
  redirect_to(request.create(saml_settings))
50
50
  end
51
-
51
+
52
52
  def consume
53
53
  response = Onelogin::Saml::Response.new(params[:SAMLResponse])
54
54
  response.settings = saml_settings
55
-
55
+
56
56
  if response.is_valid? && user = current_account.users.find_by_email(response.name_id)
57
57
  authorize_success(user)
58
58
  else
59
59
  authorize_failure(user)
60
60
  end
61
61
  end
62
-
62
+
63
63
  private
64
-
64
+
65
65
  def saml_settings
66
66
  settings = Onelogin::Saml::Settings.new
67
-
67
+
68
68
  settings.assertion_consumer_service_url = "http://#{request.host}/saml/consume"
69
69
  settings.issuer = request.host
70
70
  settings.idp_sso_target_url = "https://app.onelogin.com/saml/signon/#{OneLoginAppId}"
71
71
  settings.idp_cert_fingerprint = OneLoginAppCertFingerPrint
72
72
  settings.name_identifier_format = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
73
-
73
+
74
74
  settings
75
75
  end
76
76
  end
@@ -81,12 +81,10 @@ What's left at this point, is to wrap it all up in a controller and point the in
81
81
  Please check https://github.com/onelogin/ruby-saml-example for a very basic sample Rails application using this gem.
82
82
 
83
83
  == Note on Patches/Pull Requests
84
-
84
+
85
85
  * Fork the project.
86
86
  * Make your feature addition or bug fix.
87
87
  * Add tests for it. This is important so I don't break it in a
88
88
  future version unintentionally.
89
- * Commit, do not mess with rakefile, version, or history.
90
- (if you want to have your own version, that is fine but
91
- bump version in a commit by itself I can ignore when I pull)
89
+ * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
92
90
  * Send me a pull request. Bonus points for topic branches.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -5,9 +5,9 @@ require "cgi"
5
5
 
6
6
  module Onelogin::Saml
7
7
  class Authrequest
8
- def create(settings)
8
+ def create(settings, params = {})
9
9
  uuid = UUID.new.generate
10
- time = Time.now.strftime("%Y-%m-%dT%H:%M:%SZ")
10
+ time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
11
11
 
12
12
  request =
13
13
  "<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" ID=\"#{uuid}\" Version=\"2.0\" IssueInstant=\"#{time}\" ProtocolBinding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" AssertionConsumerServiceURL=\"#{settings.assertion_consumer_service_url}\">" +
@@ -20,8 +20,13 @@ module Onelogin::Saml
20
20
  deflated_request = Zlib::Deflate.deflate(request, 9)[2..-5]
21
21
  base64_request = Base64.encode64(deflated_request)
22
22
  encoded_request = CGI.escape(base64_request)
23
+ request_params = "?SAMLRequest=" + encoded_request
23
24
 
24
- settings.idp_sso_target_url + "?SAMLRequest=" + encoded_request
25
+ params.each_pair do |key, value|
26
+ request_params << "&#{key}=#{CGI.escape(value.to_s)}"
27
+ end
28
+
29
+ settings.idp_sso_target_url + request_params
25
30
  end
26
31
 
27
32
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ruby-saml}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["OneLogin LLC"]
12
- s.date = %q{2011-02-01}
12
+ s.date = %q{2011-02-21}
13
13
  s.description = %q{SAML toolkit for Ruby on Rails}
14
14
  s.email = %q{support@onelogin.com}
15
15
  s.extra_rdoc_files = [
@@ -77,6 +77,16 @@ class RubySamlTest < Test::Unit::TestCase
77
77
  assert auth_url =~ /^http:\/\/stuff\.com\?SAMLRequest=/
78
78
  payload = CGI.unescape(auth_url.split("=").last)
79
79
  end
80
- end
81
80
 
81
+ should "accept extra parameters" do
82
+ settings = Onelogin::Saml::Settings.new
83
+ settings.idp_sso_target_url = "http://stuff.com"
84
+
85
+ auth_url = Onelogin::Saml::Authrequest.new.create(settings, { :hello => "there" })
86
+ assert auth_url =~ /&hello=there$/
87
+
88
+ auth_url = Onelogin::Saml::Authrequest.new.create(settings, { :hello => nil })
89
+ assert auth_url =~ /&hello=$/
90
+ end
91
+ end
82
92
  end
@@ -8,7 +8,7 @@ class XmlSecurityTest < Test::Unit::TestCase
8
8
  @document = XMLSecurity::SignedDocument.new(Base64.decode64(response_document))
9
9
  end
10
10
 
11
- should "should provide getters and settings" do
11
+ should "should run validate without throwing NS related exceptions" do
12
12
  base64cert = @document.elements["//ds:X509Certificate"].text
13
13
  @document.validate_doc(base64cert, nil)
14
14
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-saml
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - OneLogin LLC
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-01 00:00:00 +01:00
18
+ date: 2011-02-21 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency