omniauth-shibboleth 1.2.0 → 1.2.1
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/Gemfile.lock +43 -0
- data/README.md +8 -0
- data/lib/omniauth-shibboleth/version.rb +1 -1
- data/lib/omniauth/strategies/shibboleth.rb +2 -0
- data/spec/omniauth/strategies/shibboleth_spec.rb +53 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 522260d787eef76c5a8ff86890b001ecf2f6b524
|
4
|
+
data.tar.gz: e118c60297ee37d49f279a2836f54a94933143b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c143be18e00484f679d4e08c4cd56eeb2c58ea8d5651634a8e35159bb4b9aa03836aa83e906a338d1e458132397b88dc465a9dd07a47fe516e4f828500e5f083
|
7
|
+
data.tar.gz: a136b0b97c1299535f9d06bf96bb27869f96fd35b5d5ab7318b304e3c9b44c11ee3948a5b43b67de13e2926c1adfa625d136fecc179e31a0a10c7876a4f05653
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
omniauth-shibboleth (1.2.0)
|
5
|
+
omniauth (>= 1.0.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.2.5)
|
11
|
+
hashie (3.4.1)
|
12
|
+
omniauth (1.2.2)
|
13
|
+
hashie (>= 1.2, < 4)
|
14
|
+
rack (~> 1.0)
|
15
|
+
rack (1.6.1)
|
16
|
+
rack-test (0.6.3)
|
17
|
+
rack (>= 1.0)
|
18
|
+
rake (10.4.2)
|
19
|
+
rspec (3.2.0)
|
20
|
+
rspec-core (~> 3.2.0)
|
21
|
+
rspec-expectations (~> 3.2.0)
|
22
|
+
rspec-mocks (~> 3.2.0)
|
23
|
+
rspec-core (3.2.3)
|
24
|
+
rspec-support (~> 3.2.0)
|
25
|
+
rspec-expectations (3.2.1)
|
26
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
27
|
+
rspec-support (~> 3.2.0)
|
28
|
+
rspec-mocks (3.2.1)
|
29
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
30
|
+
rspec-support (~> 3.2.0)
|
31
|
+
rspec-support (3.2.2)
|
32
|
+
|
33
|
+
PLATFORMS
|
34
|
+
ruby
|
35
|
+
|
36
|
+
DEPENDENCIES
|
37
|
+
omniauth-shibboleth!
|
38
|
+
rack-test
|
39
|
+
rake
|
40
|
+
rspec (>= 2.8)
|
41
|
+
|
42
|
+
BUNDLED WITH
|
43
|
+
1.10.2
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# OmniAuth Shibboleth strategy
|
2
2
|
|
3
|
+
[](http://rubygems.org/gems/omniauth-shibboleth)
|
4
|
+
[](https://travis-ci.org/toyokazu/omniauth-shibboleth)
|
5
|
+
|
3
6
|
OmniAuth Shibboleth strategy is an OmniAuth strategy for authenticating through Shibboleth (SAML). If you do not know OmniAuth, please visit OmniAuth wiki.
|
4
7
|
|
5
8
|
https://github.com/intridea/omniauth/wiki
|
@@ -29,6 +32,11 @@ https://github.com/toyokazu/omniauth-shibboleth/issues
|
|
29
32
|
|
30
33
|
To use OmniAuth Shibboleth strategy as a middleware in your rails application, add the following file to your rails application initializer directory.
|
31
34
|
|
35
|
+
% vi config/initializer/omniauth.rb
|
36
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
37
|
+
provider :shibboleth
|
38
|
+
end
|
39
|
+
|
32
40
|
% vi config/initializer/omniauth.rb
|
33
41
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
34
42
|
provider :shibboleth, {
|
@@ -10,6 +10,7 @@ module OmniAuth
|
|
10
10
|
option :info_fields, {}
|
11
11
|
option :extra_fields, []
|
12
12
|
option :debug, false
|
13
|
+
option :fail_with_empty_uid, false
|
13
14
|
option :request_type, :env
|
14
15
|
|
15
16
|
def request_phase
|
@@ -55,6 +56,7 @@ module OmniAuth
|
|
55
56
|
]
|
56
57
|
end
|
57
58
|
return fail!(:no_shibboleth_session) unless (request_param(options.shib_session_id_field.to_s) || request_param(options.shib_application_id_field.to_s))
|
59
|
+
return fail!(:empty_uid) if options[:fail_with_empty_uid] && option_handler(options.uid_field).empty?
|
58
60
|
super
|
59
61
|
end
|
60
62
|
|
@@ -10,7 +10,7 @@ def make_env(path = '/auth/shibboleth', props = {})
|
|
10
10
|
}.merge(props)
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def without_session_failure_path
|
14
14
|
if OmniAuth::VERSION >= "1.0" && OmniAuth::VERSION < "1.1"
|
15
15
|
"/auth/failure?message=no_shibboleth_session"
|
16
16
|
elsif OmniAuth::VERSION >= "1.1"
|
@@ -18,6 +18,14 @@ def failure_path
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
def empty_uid_failure_path
|
22
|
+
if OmniAuth::VERSION >= "1.0" && OmniAuth::VERSION < "1.1"
|
23
|
+
"/auth/failure?message=empty_uid"
|
24
|
+
elsif OmniAuth::VERSION >= "1.1"
|
25
|
+
"/auth/failure?message=empty_uid&strategy=shibboleth"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
21
29
|
describe OmniAuth::Strategies::Shibboleth do
|
22
30
|
let(:app){ Rack::Builder.new do |b|
|
23
31
|
b.use Rack::Session::Cookie, {:secret => "abc123"}
|
@@ -44,7 +52,7 @@ describe OmniAuth::Strategies::Shibboleth do
|
|
44
52
|
|
45
53
|
it 'is expected to fail to get Shib-Session-ID environment variable' do
|
46
54
|
expect(last_response.status).to eq(302)
|
47
|
-
expect(last_response.location).to eq(
|
55
|
+
expect(last_response.location).to eq(without_session_failure_path)
|
48
56
|
end
|
49
57
|
end
|
50
58
|
|
@@ -68,7 +76,6 @@ describe OmniAuth::Strategies::Shibboleth do
|
|
68
76
|
:shib_application_id_field => 'Shib-Application-ID',
|
69
77
|
:uid_field => :uid,
|
70
78
|
:name_field => :sn,
|
71
|
-
#:name_field => :displayName,
|
72
79
|
:info_fields => {},
|
73
80
|
:extra_fields => [:o, :affiliation] } }
|
74
81
|
let(:app){ lambda{|env| [404, {}, ['Not Found']]}}
|
@@ -233,5 +240,48 @@ describe OmniAuth::Strategies::Shibboleth do
|
|
233
240
|
expect(strategy.env['omniauth.auth']['extra']['raw_info']['affiliation']).to eq(@affiliation)
|
234
241
|
end
|
235
242
|
end
|
243
|
+
|
244
|
+
context 'empty uid with :fail_with_empty_uid = false' do
|
245
|
+
let(:options){ {
|
246
|
+
:request_type => :env,
|
247
|
+
:fail_with_empty_uid => false,
|
248
|
+
:uid_field => :uid,
|
249
|
+
:name_field => :displayName,
|
250
|
+
:info_fields => {} } }
|
251
|
+
let(:app){ lambda{|env| [200, {}, ['OK']]}}
|
252
|
+
let(:strategy){ OmniAuth::Strategies::Shibboleth.new(app, options) }
|
253
|
+
|
254
|
+
it 'is expected to output null (empty) uid as it is' do
|
255
|
+
@dummy_id = 'abcdefg'
|
256
|
+
@display_name = 'Test User'
|
257
|
+
@uid = ''
|
258
|
+
env = make_env('/auth/shibboleth/callback', 'Shib-Session-ID' => @dummy_id, 'uid' => @uid, 'displayName' => @display_name)
|
259
|
+
response = strategy.call!(env)
|
260
|
+
expect(strategy.env['omniauth.auth']['uid']).to eq(@uid)
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
context 'empty uid with :fail_with_empty_uid = true' do
|
265
|
+
let(:options){ {
|
266
|
+
:request_type => :env,
|
267
|
+
:fail_with_empty_uid => true,
|
268
|
+
:shib_session_id_field => 'Shib-Session-ID',
|
269
|
+
:shib_application_id_field => 'Shib-Application-ID',
|
270
|
+
:uid_field => :uid,
|
271
|
+
:name_field => :displayName,
|
272
|
+
:info_fields => {} } }
|
273
|
+
let(:app){ lambda{|env| [200, {}, ['OK']]}}
|
274
|
+
let(:strategy){ OmniAuth::Strategies::Shibboleth.new(app, options) }
|
275
|
+
|
276
|
+
it 'is expected to fail because of the empty uid' do
|
277
|
+
@dummy_id = 'abcdefg'
|
278
|
+
@display_name = 'Test User'
|
279
|
+
@uid = ''
|
280
|
+
env = make_env('/auth/shibboleth/callback', 'Shib-Session-ID' => @dummy_id, 'uid' => @uid, 'displayName' => @display_name)
|
281
|
+
response = strategy.call!(env)
|
282
|
+
expect(response[0]).to eq(302)
|
283
|
+
expect(response[1]["Location"]).to eq(empty_uid_failure_path)
|
284
|
+
end
|
285
|
+
end
|
236
286
|
end
|
237
287
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-shibboleth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toyokazu Akiyama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -74,6 +74,7 @@ extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
76
|
- Gemfile
|
77
|
+
- Gemfile.lock
|
77
78
|
- README.md
|
78
79
|
- Rakefile
|
79
80
|
- lib/omniauth-shibboleth.rb
|
@@ -102,11 +103,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
103
|
version: '0'
|
103
104
|
requirements: []
|
104
105
|
rubyforge_project:
|
105
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.4.5
|
106
107
|
signing_key:
|
107
108
|
specification_version: 4
|
108
109
|
summary: OmniAuth Shibboleth strategies for OmniAuth 1.x
|
109
110
|
test_files:
|
110
111
|
- spec/omniauth/strategies/shibboleth_spec.rb
|
111
112
|
- spec/spec_helper.rb
|
112
|
-
has_rdoc:
|