shib-rack 0.3.0 → 0.4.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.
- checksums.yaml +5 -5
- data/.rubocop.yml +2 -1
- data/README.md +1 -9
- data/lib/shib_rack/attribute_mapping.rb +1 -0
- data/lib/shib_rack/development_handler.rb +11 -7
- data/lib/shib_rack/engine.rb +1 -0
- data/lib/shib_rack/handler.rb +3 -2
- data/lib/shib_rack/version.rb +1 -1
- data/shib-rack.gemspec +3 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ca0cc87599b9b1fbbf3ca438be67ed5f5721424a9f8336f5e3b0cea657f74855
|
4
|
+
data.tar.gz: da104a3eca3c6af72ab5b6d377107835f7d7ed4593ce62f2fb9d9180cdaa6c4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54677c9f744f091ab69d4e28a51f4c352d8b32ba5967d4b517677288d4c285afb53328a58d68eda34c161544bcfd333cadab07f3e22525343fa62e397f7c28a1
|
7
|
+
data.tar.gz: 397dd0fbec7d4d5fe73bc7eac86068fe34568fe22f9cf05d9193abc3c728c99e576ee295baffc3b6011607737af771b982dfcaf3ed1c5eaa14e920370987a3e0
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -2,20 +2,12 @@
|
|
2
2
|
|
3
3
|
[![Gem Version][GV img]][Gem Version]
|
4
4
|
[![Build Status][BS img]][Build Status]
|
5
|
-
[![Dependency Status][DS img]][Dependency Status]
|
6
|
-
[![Code Climate][CC img]][Code Climate]
|
7
|
-
[![Coverage Status][CS img]][Code Climate]
|
8
5
|
|
9
6
|
[Gem Version]: https://rubygems.org/gems/shib-rack
|
10
7
|
[Build Status]: https://codeship.com/projects/145971
|
11
|
-
[Dependency Status]: https://gemnasium.com/ausaccessfed/shib-rack
|
12
|
-
[Code Climate]: https://codeclimate.com/github/ausaccessfed/shib-rack
|
13
8
|
|
14
9
|
[GV img]: https://img.shields.io/gem/v/shib-rack.svg
|
15
10
|
[BS img]: https://img.shields.io/codeship/5cdcef80-e343-0133-84a6-5a988fa7d930/develop.svg
|
16
|
-
[DS img]: https://img.shields.io/gemnasium/ausaccessfed/shib-rack.svg
|
17
|
-
[CC img]: https://img.shields.io/codeclimate/github/ausaccessfed/shib-rack.svg
|
18
|
-
[CS img]: https://img.shields.io/codeclimate/coverage/github/ausaccessfed/shib-rack.svg
|
19
11
|
|
20
12
|
[Shibboleth SP](http://shibboleth.net) authentication plugin for Rack-based web
|
21
13
|
applications. Contains Rails-specific extensions for consumption by Rails
|
@@ -24,7 +16,7 @@ applications.
|
|
24
16
|
Author: Shaun Mangelsdorf
|
25
17
|
|
26
18
|
```
|
27
|
-
Copyright
|
19
|
+
Copyright 2018, Australian Access Federation
|
28
20
|
|
29
21
|
Licensed under the Apache License, Version 2.0 (the "License");
|
30
22
|
you may not use this file except in compliance with the License.
|
@@ -8,19 +8,23 @@ module ShibRack
|
|
8
8
|
# sample identities for local testing.
|
9
9
|
class DevelopmentHandler < Handler
|
10
10
|
class <<self
|
11
|
-
attr_writer :identities
|
11
|
+
attr_writer :identities, :login_redirect
|
12
12
|
|
13
13
|
def identities
|
14
14
|
@identities ||= load_identities
|
15
15
|
end
|
16
16
|
|
17
|
+
def login_redirect(env)
|
18
|
+
@login_redirect ||= "#{env['SCRIPT_NAME']}/development"
|
19
|
+
end
|
20
|
+
|
17
21
|
def resolve_identity(shared_token)
|
18
22
|
identities.find { |i| i['HTTP_AUEDUPERSONSHAREDTOKEN'] == shared_token }
|
19
23
|
end
|
20
24
|
|
21
25
|
def load_identities
|
22
26
|
require 'yaml'
|
23
|
-
yaml = File.read(File.expand_path('
|
27
|
+
yaml = File.read(File.expand_path('identities.yml', __dir__))
|
24
28
|
|
25
29
|
YAML.safe_load(yaml)['identities'].map do |identity|
|
26
30
|
identity.reduce({}) { |a, (k, v)| a.merge("HTTP_#{k.upcase}" => v) }
|
@@ -52,7 +56,7 @@ module ShibRack
|
|
52
56
|
end
|
53
57
|
|
54
58
|
env['rack.session']['original_params'] = params
|
55
|
-
[302, { 'Location' =>
|
59
|
+
[302, { 'Location' => DevelopmentHandler.login_redirect(env) }, []]
|
56
60
|
end
|
57
61
|
|
58
62
|
def restore_original_query(env)
|
@@ -72,7 +76,7 @@ module ShibRack
|
|
72
76
|
end
|
73
77
|
|
74
78
|
def development_html
|
75
|
-
<<~
|
79
|
+
<<~HTML
|
76
80
|
<!doctype html>
|
77
81
|
<html>
|
78
82
|
<head><title>Development Login</title></head>
|
@@ -81,7 +85,7 @@ module ShibRack
|
|
81
85
|
#{identities_html}
|
82
86
|
</body>
|
83
87
|
</html>
|
84
|
-
|
88
|
+
HTML
|
85
89
|
end
|
86
90
|
|
87
91
|
def identities_html
|
@@ -89,7 +93,7 @@ module ShibRack
|
|
89
93
|
end
|
90
94
|
|
91
95
|
def identity_html(identity)
|
92
|
-
<<~
|
96
|
+
<<~HTML
|
93
97
|
<form method="get" action="login">
|
94
98
|
<hr/>
|
95
99
|
<pre>#{JSON.pretty_generate(identity)}</pre>
|
@@ -97,7 +101,7 @@ module ShibRack
|
|
97
101
|
value="#{identity['HTTP_AUEDUPERSONSHAREDTOKEN']}"/>
|
98
102
|
<button type="submit">Log In</button>
|
99
103
|
</form>
|
100
|
-
|
104
|
+
HTML
|
101
105
|
end
|
102
106
|
end
|
103
107
|
end
|
data/lib/shib_rack/engine.rb
CHANGED
data/lib/shib_rack/handler.rb
CHANGED
@@ -5,7 +5,6 @@ module ShibRack
|
|
5
5
|
# Shibboleth SP.
|
6
6
|
class Handler
|
7
7
|
attr_reader :error_handler
|
8
|
-
private :error_handler
|
9
8
|
|
10
9
|
def initialize(opts)
|
11
10
|
@receiver = constantize(opts[:receiver])
|
@@ -15,6 +14,7 @@ module ShibRack
|
|
15
14
|
def call(env)
|
16
15
|
return login(env) if env['PATH_INFO'] == '/login'
|
17
16
|
return logout(env) if env['PATH_INFO'] == '/logout'
|
17
|
+
|
18
18
|
[404, {}, ["Not found: #{env['PATH_INFO']}"]]
|
19
19
|
end
|
20
20
|
|
@@ -32,7 +32,7 @@ module ShibRack
|
|
32
32
|
|
33
33
|
def login(env)
|
34
34
|
receiver.receive(env)
|
35
|
-
rescue => e
|
35
|
+
rescue StandardError => e
|
36
36
|
error_handler.handle(env, e)
|
37
37
|
end
|
38
38
|
|
@@ -42,6 +42,7 @@ module ShibRack
|
|
42
42
|
|
43
43
|
def constantize(klass_name)
|
44
44
|
return nil if klass_name.nil?
|
45
|
+
|
45
46
|
klass_name.split('::').reduce(Kernel) { |acc, elem| acc.const_get(elem) }
|
46
47
|
end
|
47
48
|
|
data/lib/shib_rack/version.rb
CHANGED
data/shib-rack.gemspec
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
5
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
5
|
require 'shib_rack/version'
|
7
6
|
|
@@ -22,8 +21,8 @@ Gem::Specification.new do |spec|
|
|
22
21
|
|
23
22
|
spec.add_development_dependency 'aaf-gumboot'
|
24
23
|
|
25
|
-
spec.add_development_dependency 'rack-test'
|
26
24
|
spec.add_development_dependency 'faker'
|
25
|
+
spec.add_development_dependency 'rack-test'
|
27
26
|
spec.add_development_dependency 'rails', '~> 4.2'
|
28
27
|
spec.add_development_dependency 'sqlite3'
|
29
28
|
|
@@ -33,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
33
32
|
|
34
33
|
spec.add_development_dependency 'guard'
|
35
34
|
spec.add_development_dependency 'guard-bundler'
|
36
|
-
spec.add_development_dependency 'guard-rubocop'
|
37
35
|
spec.add_development_dependency 'guard-rspec'
|
36
|
+
spec.add_development_dependency 'guard-rubocop'
|
38
37
|
spec.add_development_dependency 'simplecov'
|
39
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shib-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun Mangelsdorf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: faker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rack-test
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name: guard-
|
168
|
+
name: guard-rspec
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -179,7 +179,7 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name: guard-
|
182
|
+
name: guard-rubocop
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
@@ -254,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
254
|
version: '0'
|
255
255
|
requirements: []
|
256
256
|
rubyforge_project:
|
257
|
-
rubygems_version: 2.
|
257
|
+
rubygems_version: 2.7.7
|
258
258
|
signing_key:
|
259
259
|
specification_version: 4
|
260
260
|
summary: Rack middleware for Shibboleth SP authentication
|