devise_saml_authenticatable 1.9.0 → 2.0.0

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.
@@ -45,7 +45,7 @@ class SamlIdpController < StubSamlIdp::IdpController
45
45
  now = Time.now.utc
46
46
  response_id = SecureRandom.uuid
47
47
  audience_uri = opts[:audience_uri] || "#{saml_acs_url[/^(.*?\/\/.*?\/)/, 1]}saml/metadata"
48
- issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url) || "http://example.com"
48
+ issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url) || "https://example.com"
49
49
 
50
50
  attributes = opts.fetch(:attributes, {})
51
51
  if attributes.any?
@@ -96,17 +96,14 @@ class SamlIdpController < StubSamlIdp::IdpController
96
96
  if Idp::Application.config.slo_sp_url
97
97
  redirect_to "#{Idp::Application.config.slo_sp_url}?SAMLResponse=#{@saml_slo_response}"
98
98
  else
99
- redirect_to 'http://example.com'
99
+ redirect_to 'https://example.com'
100
100
  end
101
101
  end
102
102
 
103
103
  def sp_sign_out
104
104
  idp_slo_authenticate(params[:name_id])
105
105
  saml_slo_request = encode_SAML_SLO_Request("you@example.com")
106
- uri = URI.parse("http://localhost:8020/users/saml/idp_sign_out")
107
- require 'net/http'
108
- Net::HTTP.post_form(uri, {"SAMLRequest" => saml_slo_request})
109
- head :no_content
106
+ redirect_to "http://localhost:8020/users/saml/idp_sign_out?SAMLRequest=#{URI.encode_www_form_component(saml_slo_request)}"
110
107
  end
111
108
 
112
109
  def idp_slo_authenticate(email)
@@ -148,7 +145,7 @@ class SamlIdpController < StubSamlIdp::IdpController
148
145
  now = Time.now.utc
149
146
  response_id = SecureRandom.uuid
150
147
  audience_uri = opts[:audience_uri] || (@saml_slo_acs_url && @saml_slo_acs_url[/^(.*?\/\/.*?\/)/, 1])
151
- issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url.split("?")[0]) || "http://example.com"
148
+ issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url.split("?")[0]) || "https://example.com"
152
149
 
153
150
  assertion = %[<Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_#{session_index}" IssueInstant="#{now.iso8601}" Version="2.0"><Issuer2>#{issuer_uri}</Issuer2><Subject><NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">#{nameID}</NameID><SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><SubjectConfirmationData InResponseTo="#{@saml_slo_request_id}" NotOnOrAfter="#{(now+3*60).iso8601}" Recipient="#{@saml_slo_acs_url}"></SubjectConfirmationData></SubjectConfirmation></Subject><Conditions NotBefore="#{(now-5).iso8601}" NotOnOrAfter="#{(now+60*60).iso8601}"><AudienceRestriction><Audience>#{audience_uri}</Audience></AudienceRestriction></Conditions><AttributeStatement><Attribute Name="#{email_address_attribute_key}"><AttributeValue>#{nameID}</AttributeValue></Attribute></AttributeStatement><AuthnStatement AuthnInstant="#{now.iso8601}" SessionIndex="_#{session_index}"><AuthnContext><AuthnContextClassRef>urn:federation:authentication:windows</AuthnContextClassRef></AuthnContext></AuthnStatement></Assertion>]
154
151
 
@@ -183,7 +180,7 @@ class SamlIdpController < StubSamlIdp::IdpController
183
180
  def encode_SAML_SLO_Request(nameID, opts = {})
184
181
  now = Time.now.utc
185
182
  response_id = SecureRandom.uuid
186
- issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url.split("?")[0]) || "http://example.com"
183
+ issuer_uri = opts[:issuer_uri] || (defined?(request) && request.url.split("?")[0]) || "https://example.com"
187
184
  xml = %[<samlp:LogoutRequest
188
185
  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
189
186
  xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
@@ -12,18 +12,10 @@ ruby_saml_version = ENV.fetch("RUBY_SAML_VERSION")
12
12
 
13
13
  gem 'devise_saml_authenticatable', path: File.expand_path("../../..", __FILE__)
14
14
  gem 'ruby-saml', ruby_saml_version
15
- gem 'thin'
15
+ gem 'net-smtp', require: false
16
+ gem 'net-imap', require: false
17
+ gem 'net-pop', require: false
16
18
 
17
- if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.1")
18
- gem 'net-smtp', require: false
19
- gem 'net-imap', require: false
20
- gem 'net-pop', require: false
21
- end
22
-
23
- if Rails::VERSION::MAJOR < 6
24
- # sqlite3 is hard-coded in Rails < 6 to v1.3.x
25
- gsub_file 'Gemfile', /^gem 'sqlite3'.*$/, "gem 'sqlite3', '~> 1.3.6'"
26
- end
27
19
 
28
20
  template File.expand_path('../attribute_map_resolver.rb.erb', __FILE__), 'app/lib/attribute_map_resolver.rb'
29
21
  template File.expand_path('../idp_settings_adapter.rb.erb', __FILE__), 'app/lib/idp_settings_adapter.rb'
@@ -40,7 +32,7 @@ create_file('app/lib/our_saml_failed_callback_handler.rb', <<-CALLBACKHANDLER)
40
32
 
41
33
  class OurSamlFailedCallbackHandler
42
34
  def handle(response, strategy)
43
- strategy.redirect! "http://www.example.com"
35
+ strategy.redirect! "https://www.example.com"
44
36
  end
45
37
  end
46
38
  CALLBACKHANDLER
@@ -83,7 +75,7 @@ after_bundle do
83
75
 
84
76
  config.saml_configure do |settings|
85
77
  settings.assertion_consumer_service_url = "http://localhost:8020/users/saml/auth"
86
- settings.issuer = "http://localhost:8020/saml/metadata"
78
+ settings.sp_entity_id = "http://localhost:8020/saml/metadata"
87
79
  settings.idp_cert_fingerprint = "9E:65:2E:03:06:8D:80:F2:86:C7:6C:77:A1:D9:14:97:0A:4D:F4:4D"
88
80
  settings.name_identifier_format = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
89
81
  end
@@ -139,8 +131,8 @@ end
139
131
 
140
132
  rake "db:create"
141
133
  rake "db:migrate"
142
- rake "db:create", env: "production"
143
- rake "db:migrate", env: "production"
134
+ rake "db:create", env: "test"
135
+ rake "db:migrate", env: "test"
144
136
 
145
137
  # Remove any specs so that future RSpec runs don't try to also run these
146
138
  run 'rm -rf spec'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_saml_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Sauter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-19 00:00:00.000000000 Z
11
+ date: 2025-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.7'
33
+ version: '1.18'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.7'
40
+ version: '1.18'
41
41
  description: SAML Authentication for devise
42
42
  email:
43
43
  - Josef.Sauter@gmail.com
@@ -45,6 +45,7 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - ".github/dependabot.yml"
48
49
  - ".github/workflows/ci.yml"
49
50
  - ".gitignore"
50
51
  - ".rspec"
@@ -79,9 +80,9 @@ files:
79
80
  - spec/rails_helper.rb
80
81
  - spec/routes/routes_spec.rb
81
82
  - spec/spec_helper.rb
82
- - spec/support/Gemfile.rails5.2
83
- - spec/support/Gemfile.rails6
84
- - spec/support/Gemfile.rails6.1
83
+ - spec/support/Gemfile.rails7.1
84
+ - spec/support/Gemfile.rails7.2
85
+ - spec/support/Gemfile.rails8.0
85
86
  - spec/support/attribute-map.yml
86
87
  - spec/support/attribute_map_resolver.rb.erb
87
88
  - spec/support/idp_settings_adapter.rb.erb
@@ -92,7 +93,7 @@ files:
92
93
  - spec/support/saml_idp-saml_slo_post.html.erb
93
94
  - spec/support/saml_idp_controller.rb.erb
94
95
  - spec/support/sp_template.rb
95
- homepage: ''
96
+ homepage: https://github.com/apokalipto/devise_saml_authenticatable
96
97
  licenses:
97
98
  - MIT
98
99
  metadata: {}
@@ -104,14 +105,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
105
  requirements:
105
106
  - - ">="
106
107
  - !ruby/object:Gem::Version
107
- version: '0'
108
+ version: 2.6.0
108
109
  required_rubygems_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
112
113
  version: '0'
113
114
  requirements: []
114
- rubygems_version: 3.3.3
115
+ rubygems_version: 3.5.22
115
116
  signing_key:
116
117
  specification_version: 4
117
118
  summary: SAML Authentication for devise
@@ -127,9 +128,9 @@ test_files:
127
128
  - spec/rails_helper.rb
128
129
  - spec/routes/routes_spec.rb
129
130
  - spec/spec_helper.rb
130
- - spec/support/Gemfile.rails5.2
131
- - spec/support/Gemfile.rails6
132
- - spec/support/Gemfile.rails6.1
131
+ - spec/support/Gemfile.rails7.1
132
+ - spec/support/Gemfile.rails7.2
133
+ - spec/support/Gemfile.rails8.0
133
134
  - spec/support/attribute-map.yml
134
135
  - spec/support/attribute_map_resolver.rb.erb
135
136
  - spec/support/idp_settings_adapter.rb.erb
@@ -1,24 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in devise_saml_authenticatable.gemspec
4
- gemspec path: '../..'
5
-
6
- group :test do
7
- gem 'rake'
8
- gem 'rspec', '~> 3.0'
9
- gem 'rails', '~> 6.1.0'
10
- gem 'rspec-rails', '~> 5.0'
11
- gem 'sqlite3', '~> 1.4.0'
12
- gem 'capybara'
13
- gem 'selenium-webdriver'
14
-
15
- if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.0")
16
- gem 'webrick'
17
- end
18
-
19
- if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new("3.1")
20
- gem 'net-smtp', require: false
21
- gem 'net-imap', require: false
22
- gem 'net-pop', require: false
23
- end
24
- end