omniauth-ucam-raven 1.0.1 → 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.
- checksums.yaml +4 -4
- data/.editorconfig +11 -0
- data/CHANGELOG.md +20 -0
- data/Gemfile.lock +7 -7
- data/LICENSE +1 -1
- data/README.md +52 -14
- data/examples/sinatra/Gemfile +1 -3
- data/examples/sinatra/Gemfile.lock +13 -14
- data/examples/sinatra/README.md +5 -4
- data/examples/sinatra/config.ru +3 -25
- data/examples/sinatra/ucamravenexample.rb +32 -0
- data/lib/omniauth-ucam-raven/version.rb +1 -1
- data/lib/omniauth/strategies/ucam-raven.rb +47 -31
- data/omniauth-ucam-raven.gemspec +4 -4
- metadata +13 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18905b9dcd1574b2f30aabfd3f64a724de65c7bea249cd634f8accdb020971ba
|
4
|
+
data.tar.gz: a6c475afba94a4c864fd9b842edf6e622b5a4b724883706bcda3da464170c81b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 784b0877cc602ca311b8125c8a469359954b62bb0bb38092ce5e324d4c5b6f94794942b9402dc5e8b1f03338801c3ef92e48ed0daac78090f13818b8c6030557
|
7
|
+
data.tar.gz: 274c9a9fcddeb0cdfc57d8441c1a0edaece1b851c24e441219a6d7ab919800ef5c7b8c2e2aa8473cf8b4feb1498aeb73c3c29f17078e323221724d225e01790f
|
data/.editorconfig
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## [2.0.0] - 2020-05-27
|
4
|
+
|
5
|
+
* Add support for the SRCF Goose authentication service.
|
6
|
+
* Add support for multiple signing keys.
|
7
|
+
* Return an error if the authentication responses is issued too far into the future from a local perspective.
|
8
|
+
* Improve compliance of the skew parameter with the WebAuth protocol.
|
9
|
+
* Raise an exception if RSA key file path and/or ID are not present.
|
10
|
+
* Improve documentation and example code.
|
11
|
+
* Bump internal dependencies.
|
12
|
+
|
13
|
+
## [1.0.1] - 2018-11-15
|
14
|
+
|
15
|
+
* No user-facing changes.
|
16
|
+
* Bump internal rack version to 2.0.6 in order to patch a DoS vulnerability (CVE-2018-16468).
|
17
|
+
|
18
|
+
## [1.0.0] - 2018-11-04
|
19
|
+
|
20
|
+
* Initial release.
|
data/Gemfile.lock
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
omniauth-ucam-raven (1.0.
|
4
|
+
omniauth-ucam-raven (1.0.1)
|
5
5
|
omniauth (~> 1.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
hashie (
|
11
|
-
omniauth (1.
|
12
|
-
hashie (>= 3.4.6
|
10
|
+
hashie (4.1.0)
|
11
|
+
omniauth (1.9.1)
|
12
|
+
hashie (>= 3.4.6)
|
13
13
|
rack (>= 1.6.2, < 3)
|
14
|
-
rack (2.
|
14
|
+
rack (2.2.2)
|
15
15
|
|
16
16
|
PLATFORMS
|
17
17
|
ruby
|
18
18
|
|
19
19
|
DEPENDENCIES
|
20
|
-
bundler (~>
|
20
|
+
bundler (~> 2.0)
|
21
21
|
omniauth-ucam-raven!
|
22
22
|
|
23
23
|
BUNDLED WITH
|
24
|
-
1.
|
24
|
+
2.1.4
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -12,36 +12,74 @@ gem 'omniauth-ucam-raven'
|
|
12
12
|
|
13
13
|
And then run `bundle install`.
|
14
14
|
|
15
|
+
You then need to download the Raven service RSA public key pro tempore in PEM format from the project pages [here](https://raven.cam.ac.uk/project/keys/) and store it somewhere that is not writable by your web application.
|
16
|
+
You also need to note the key ID which at the time of writing (April 2020) is 2.
|
17
|
+
|
15
18
|
## Usage
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
From this point on,
|
20
|
+
The strategy expects Raven signing key data in the form of an array of key ID & key path tuples.
|
21
|
+
This allows multiple signing keys to be supported in order to facilitate key rollover or multiple backend auth servers.
|
22
|
+
If you do not provide the key paths and/or IDs in the correct format then an exception will be raised.
|
23
|
+
From this point on, it's assumed that the full UNIX file path and key ID are stored in the `KEY_PATH` and `KEY_ID` environment variables respectively.
|
21
24
|
|
22
|
-
|
25
|
+
If you're using Rails, you'll want to add the following to an initialisers e.g. `config/initializers/omniauth.rb` and then restart your application server:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
29
|
+
key_data = [[ENV['KEY_ID'], ENV['KEY_PATH']]]
|
30
|
+
provider :ucamraven, key_data
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
For Sinatra and other Rack-based frameworks, you can integrate the strategy into your middleware e.g. in a `config.ru`:
|
23
35
|
|
24
36
|
```ruby
|
25
37
|
use OmniAuth::Builder do
|
26
|
-
|
38
|
+
key_data = [[ENV['KEY_ID'], ENV['KEY_PATH']]]
|
39
|
+
provider :ucamraven, key_data
|
27
40
|
end
|
28
41
|
```
|
29
42
|
|
30
|
-
|
43
|
+
Upon authentication, the user's details will be available in the `request.env['omniauth.auth']` object as show in the example below. Each field is well documented in the [protocol specification](https://github.com/cambridgeuniversity/UcamWebauth-protocol/blob/6e70f1f0223bc30f6963bdb79e06214a482a512e/waa2wls-protocol.txt#L231).
|
44
|
+
It should be noted that the `email` field is for provided convenience only and its presence does not imply that the address contained therein is a valid email address.
|
45
|
+
|
46
|
+
```
|
47
|
+
{
|
48
|
+
"provider"=>"ucamraven",
|
49
|
+
"uid"=>"crsid",
|
50
|
+
"info"=>{"name"=>nil, "email"=>"crsid@cam.ac.uk", "ptags"=>["current"]},
|
51
|
+
"credentials"=>{"auth"=>"", "sso"=>["pwd"]},
|
52
|
+
"extra"=>{"id"=>"dateandtime", "lifetime"=>"sessionlifetime", "parameters"=>"your params string returned to you"}
|
53
|
+
}
|
54
|
+
```
|
55
|
+
|
56
|
+
## Configuration
|
57
|
+
|
58
|
+
The Ucam-Raven strategy will work straight out of the box but you can apply custom configuration if you so desire by appending an options hash to the arguments when `provider` is called, for example:
|
31
59
|
|
32
60
|
```ruby
|
33
|
-
|
34
|
-
|
61
|
+
use OmniAuth::Builder do
|
62
|
+
key_data = [[1, "path_to_key_1"], [2, "path_to_key_2"], [3, "path_to_key_3"]]
|
63
|
+
options = { desc: 'my description', msg: 'my message', params: 'string to be returned after login', date: true }
|
64
|
+
provider :ucamraven, key_data, options
|
35
65
|
end
|
36
66
|
```
|
37
67
|
|
38
|
-
|
39
|
-
[here](https://github.com/CHTJonas/omniauth-ucam-raven/blob/master/lib/omniauth/strategies/ucam-raven.rb#L13) in the source code.
|
68
|
+
If you are looking to use the strategy with the [SRCF Goose authentication service](https://auth.srcf.net) rather than Raven then you can include the following configuration:
|
40
69
|
|
41
|
-
|
70
|
+
```ruby
|
71
|
+
use OmniAuth::Builder do
|
72
|
+
key_data = [[2, "path_to_raven_key"], [500, "path_to_goose_key"]]
|
73
|
+
provider :ucamraven, key_data, honk: true
|
74
|
+
end
|
75
|
+
```
|
42
76
|
|
43
|
-
See the code for the [example Sinatra app](https://github.com/CHTJonas/omniauth-ucam-raven/blob/master/examples/sinatra
|
77
|
+
See the code for the [example Sinatra app](https://github.com/CHTJonas/omniauth-ucam-raven/blob/master/examples/sinatra) for a hands-on example of this and [here](https://github.com/CHTJonas/omniauth-ucam-raven/blob/master/lib/omniauth/strategies/ucam-raven.rb#L14) for a full list of configurable options.
|
78
|
+
Each option is fully documented in the [specification](https://github.com/cambridgeuniversity/UcamWebauth-protocol/blob/6e70f1f0223bc30f6963bdb79e06214a482a512e/waa2wls-protocol.txt#L106).
|
79
|
+
|
80
|
+
For additional information, please refer to the [OmniAuth wiki](https://github.com/intridea/omniauth/wiki).
|
44
81
|
|
45
82
|
## License
|
46
83
|
|
47
|
-
omniauth-ucam-raven is released under the MIT License.
|
84
|
+
omniauth-ucam-raven is released under the MIT License.
|
85
|
+
Copyright (c) 2018-2020 Charlie Jonas.
|
data/examples/sinatra/Gemfile
CHANGED
@@ -1,36 +1,35 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
omniauth-ucam-raven (1.0.
|
4
|
+
omniauth-ucam-raven (1.0.1)
|
5
5
|
omniauth (~> 1.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
hashie (
|
11
|
-
|
12
|
-
|
13
|
-
omniauth (1.
|
14
|
-
hashie (>= 3.4.6
|
10
|
+
hashie (4.1.0)
|
11
|
+
mustermann (1.1.1)
|
12
|
+
ruby2_keywords (~> 0.0.1)
|
13
|
+
omniauth (1.9.1)
|
14
|
+
hashie (>= 3.4.6)
|
15
15
|
rack (>= 1.6.2, < 3)
|
16
|
-
rack (2.
|
17
|
-
rack-protection (2.0.
|
16
|
+
rack (2.2.2)
|
17
|
+
rack-protection (2.0.8.1)
|
18
18
|
rack
|
19
|
-
|
19
|
+
ruby2_keywords (0.0.2)
|
20
|
+
sinatra (2.0.8.1)
|
20
21
|
mustermann (~> 1.0)
|
21
22
|
rack (~> 2.0)
|
22
|
-
rack-protection (= 2.0.
|
23
|
+
rack-protection (= 2.0.8.1)
|
23
24
|
tilt (~> 2.0)
|
24
|
-
tilt (2.0.
|
25
|
+
tilt (2.0.10)
|
25
26
|
|
26
27
|
PLATFORMS
|
27
28
|
ruby
|
28
29
|
|
29
30
|
DEPENDENCIES
|
30
|
-
multi_json
|
31
|
-
omniauth
|
32
31
|
omniauth-ucam-raven!
|
33
32
|
sinatra
|
34
33
|
|
35
34
|
BUNDLED WITH
|
36
|
-
1.
|
35
|
+
2.1.4
|
data/examples/sinatra/README.md
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# Sinatra Example
|
2
2
|
|
3
3
|
This example clearly demonstrates how to use the omniauth-ucam-raven strategy with a simple Sinatra web app.
|
4
|
-
You will need to download the RSA public key from the
|
5
|
-
At the time of writing (
|
4
|
+
You will need to download the Raven service RSA public key pro tempore in PEM format from the project pages [here](https://raven.cam.ac.uk/project/keys/) and edit the path in `ucamravenexample.rb`.
|
5
|
+
At the time of writing (April 2020), the key ID being used to sign responses is 2.
|
6
6
|
|
7
7
|
## Setup
|
8
8
|
|
9
9
|
1. `git clone https://github.com/chtjonas/omniauth-ucam-raven.git`
|
10
10
|
2. `cd omniauth-ucam-raven/examples/sinatra`
|
11
|
-
3.
|
12
|
-
4.
|
11
|
+
3. `bundle install`
|
12
|
+
4. `bundle exec rackup`
|
13
|
+
5. Navigate to http://localhost:4567
|
data/examples/sinatra/config.ru
CHANGED
@@ -1,29 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler
|
3
|
-
require 'sinatra'
|
4
|
-
require 'omniauth-ucam-raven'
|
5
|
-
require 'uri'
|
2
|
+
require 'bundler'
|
6
3
|
|
7
|
-
|
8
|
-
use Rack::Session::Cookie
|
9
|
-
|
10
|
-
get '/' do
|
11
|
-
redirect '/auth/ucam-raven'
|
12
|
-
end
|
13
|
-
|
14
|
-
get '/auth/:provider/callback' do
|
15
|
-
content_type 'text/plain'
|
16
|
-
request.env['omniauth.auth'].to_hash.inspect rescue "No Data"
|
17
|
-
end
|
18
|
-
|
19
|
-
get '/auth/failure' do
|
20
|
-
content_type 'text/plain'
|
21
|
-
request.env['omniauth.auth'].to_hash.inspect rescue "No Data"
|
22
|
-
end
|
23
|
-
|
24
|
-
use OmniAuth::Builder do
|
25
|
-
provider OmniAuth::Strategies::UcamRaven, 2, "/Users/charlie/Downloads/pubkey2", {desc: 'Ucam-Raven Omniauth Strategy - Sinatra Demo', msg: 'you are testing login authorisation', params: 'This string will always get returned from WLS to WAA.', date: true }
|
26
|
-
end
|
27
|
-
end
|
4
|
+
Bundler.require
|
28
5
|
|
6
|
+
require './ucamravenexample'
|
29
7
|
run UcamRavenExample.run!
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class UcamRavenExample < Sinatra::Base
|
2
|
+
use Rack::Session::Cookie
|
3
|
+
use OmniAuth::Builder do
|
4
|
+
key_data = [[2, "/Users/charlie/Downloads/pubkey2"], [500, "/Users/charlie/Downloads/pubkey500"]]
|
5
|
+
options = {
|
6
|
+
desc: 'Ucam-Raven Omniauth Strategy - Sinatra Demo',
|
7
|
+
msg: 'you are testing login authorisation',
|
8
|
+
params: 'This string will always get returned from WLS to WAA.',
|
9
|
+
date: true,
|
10
|
+
honk: true
|
11
|
+
}
|
12
|
+
provider :ucamraven, key_data, options
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/' do
|
16
|
+
redirect '/auth/ucamraven'
|
17
|
+
end
|
18
|
+
|
19
|
+
get '/auth/:provider/callback' do
|
20
|
+
content_type 'text/plain'
|
21
|
+
request.env['omniauth.auth'].to_hash.inspect
|
22
|
+
rescue
|
23
|
+
"No Data"
|
24
|
+
end
|
25
|
+
|
26
|
+
get '/auth/failure' do
|
27
|
+
content_type 'text/plain'
|
28
|
+
request.env['omniauth.auth'].to_hash.inspect
|
29
|
+
rescue
|
30
|
+
"No Data"
|
31
|
+
end
|
32
|
+
end
|
@@ -7,30 +7,46 @@ module OmniAuth
|
|
7
7
|
module Strategies
|
8
8
|
class UcamRaven
|
9
9
|
include OmniAuth::Strategy
|
10
|
+
RAVEN_URL = 'https://raven.cam.ac.uk/auth/authenticate.html'
|
11
|
+
GOOSE_URL = 'https://auth.srcf.net/wls/authenticate'
|
10
12
|
|
13
|
+
# The name of the strategy.
|
11
14
|
option :name, 'ucamraven'
|
12
15
|
|
13
16
|
# Query parameters to pass to the WLS.
|
14
17
|
# By choice, we only use version 3 so we can support Raven for Life.
|
15
|
-
# See: https://
|
16
|
-
option :url,
|
18
|
+
# See: https://github.com/cambridgeuniversity/UcamWebauth-protocol/blob/master/waa2wls-protocol.txt
|
19
|
+
option :url, nil
|
17
20
|
option :desc, nil
|
18
21
|
option :aauth, nil
|
19
22
|
option :iact, nil
|
20
23
|
option :msg, nil
|
21
24
|
option :params, nil
|
22
25
|
option :date, false
|
23
|
-
option :skew,
|
26
|
+
option :skew, 45 # the spec states that a time of 30-60 seconds is probably appropriate
|
24
27
|
option :fail, nil
|
25
28
|
|
26
|
-
#
|
27
|
-
option :
|
28
|
-
|
29
|
-
args %i[key_id key_path]
|
29
|
+
# An array of RSA key IDs and paths to the location where the keys are stored.
|
30
|
+
option :key_data, nil
|
31
|
+
args :key_data
|
30
32
|
|
33
|
+
# Whether or not to use the SRCF authentication service instead of Raven.
|
34
|
+
option :honk, false
|
35
|
+
|
36
|
+
# This method is called when the strategy is instantiated.
|
37
|
+
def initialize(*args, &block)
|
38
|
+
super(*args, &block)
|
39
|
+
raise 'Raven public key data not given' if options.key_data.nil?
|
40
|
+
raise 'Raven public key data not correctly formatted' unless options.key_data.is_a?(Array)
|
41
|
+
options.key_data.each do |e|
|
42
|
+
raise 'Raven public key data not correctly formatted' unless e.is_a?(Array) && e.length == 2
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# This method is called when the user initiates a login. It redirects them to the Raven service for authentication.
|
31
47
|
def request_phase
|
32
|
-
url =
|
33
|
-
url << "ver=3"
|
48
|
+
url = (options.url || options.honk ? GOOSE_URL : RAVEN_URL).dup
|
49
|
+
url << "?ver=3"
|
34
50
|
url << "&url=#{callback_url}"
|
35
51
|
url << "&desc=#{URI::encode options.desc}" if options.desc
|
36
52
|
url << "&aauth=#{URI::encode options.aauth}" if options.aauth
|
@@ -38,16 +54,15 @@ module OmniAuth
|
|
38
54
|
url << "&msg=#{URI::encode options.msg}" if options.msg
|
39
55
|
url << "¶ms=#{URI::encode options.params}" if options.params
|
40
56
|
url << "&date=#{date_to_rfc3339}" if options.date
|
41
|
-
# skew is DEPRECATED
|
57
|
+
# The skew parameter is DEPRECATED and SHOULD NOT be included in requests to the WLS.
|
42
58
|
url << "&fail=#{URI::encode options.fail}" if options.fail
|
43
59
|
redirect url
|
44
60
|
end
|
45
61
|
|
62
|
+
# This method is called after the user authenticates to Raven and is redirected back to the application.
|
46
63
|
def callback_phase
|
47
|
-
# Check
|
48
|
-
if wls_response.nil? || wls_response == ""
|
49
|
-
return fail!(:wls_response_not_present)
|
50
|
-
end
|
64
|
+
# Check the response is in the format we're expecting.
|
65
|
+
return fail!(:wls_response_not_present) if wls_response.nil? || wls_response == ""
|
51
66
|
return fail!(:authentication_cancelled_by_user) if wls_response[1].to_i == 410
|
52
67
|
return fail!(:no_mutually_acceptable_authentication_types_available) if wls_response[1].to_i == 510
|
53
68
|
return fail!(:unsupported_protocol_version) if wls_response[1].to_i == 520
|
@@ -62,22 +77,24 @@ module OmniAuth
|
|
62
77
|
return fail!(:too_many_wls_response_parameters) if wls_response.length > 14
|
63
78
|
|
64
79
|
# Check the time skew in seconds.
|
80
|
+
return fail!(:invalid_issue) unless wls_response[3].length == 16
|
65
81
|
skew = ((DateTime.now.new_offset(0) - date_from_rfc3339(wls_response[3])) * 24 * 60 * 60).to_i
|
66
|
-
return fail!(:skew_too_large) unless skew < options.skew
|
67
|
-
|
68
|
-
# Check the key
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
82
|
+
return fail!(:skew_too_large) unless skew.abs < options.skew
|
83
|
+
|
84
|
+
# Check that the RSA key ID and signature are correct.
|
85
|
+
options.key_data.each do |kid, kpath|
|
86
|
+
if wls_response[12].to_i == kid
|
87
|
+
signed_part = wls_response.first(12).join('!')
|
88
|
+
base64_part = wls_response[13].tr('-._','+/=')
|
89
|
+
signature = Base64.decode64(base64_part)
|
90
|
+
file_contents = File.read(kpath)
|
91
|
+
key = OpenSSL::PKey::RSA.new(file_contents)
|
92
|
+
digest = OpenSSL::Digest::SHA1.new
|
93
|
+
return fail!(:rsa_signature_check_failed) unless key.verify(digest, signature, signed_part)
|
94
|
+
return super
|
95
|
+
end
|
96
|
+
end
|
97
|
+
return fail!(:unknown_rsa_key_id)
|
81
98
|
end
|
82
99
|
|
83
100
|
uid do
|
@@ -171,8 +188,7 @@ module OmniAuth
|
|
171
188
|
s << "%02d" % t.sec
|
172
189
|
s << "Z"
|
173
190
|
return s
|
174
|
-
|
175
|
-
|
191
|
+
end
|
176
192
|
end
|
177
193
|
end
|
178
194
|
end
|
data/omniauth-ucam-raven.gemspec
CHANGED
@@ -6,10 +6,10 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = 'omniauth-ucam-raven'
|
7
7
|
s.version = Omniauth::UcamRaven::VERSION
|
8
8
|
s.license = 'MIT'
|
9
|
-
s.summary = "
|
10
|
-
s.description =
|
9
|
+
s.summary = "OmniAuth strategy for Cambridge University's Raven SSO system"
|
10
|
+
s.description = 'This Ruby gem provides an OmniAuth strategy for authenticating using the Raven SSO System, provided by the University of Cambridge, or any other system implementing the Ucam-WebAuth protocol such as the SRCF Goose login service.'
|
11
11
|
s.authors = ['Charlie Jonas']
|
12
|
-
s.email = ['
|
12
|
+
s.email = ['charlie@charliejonas.co.uk']
|
13
13
|
s.homepage = 'https://github.com/CHTJonas/omniauth-ucam-raven'
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split($/)
|
@@ -18,5 +18,5 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ['lib']
|
19
19
|
|
20
20
|
s.add_dependency 'omniauth', '~> 1.0'
|
21
|
-
s.add_development_dependency 'bundler', '~>
|
21
|
+
s.add_development_dependency 'bundler', '~> 2.0'
|
22
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-ucam-raven
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charlie Jonas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -30,22 +30,26 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :development
|
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: '
|
41
|
-
description:
|
40
|
+
version: '2.0'
|
41
|
+
description: This Ruby gem provides an OmniAuth strategy for authenticating using
|
42
|
+
the Raven SSO System, provided by the University of Cambridge, or any other system
|
43
|
+
implementing the Ucam-WebAuth protocol such as the SRCF Goose login service.
|
42
44
|
email:
|
43
|
-
-
|
45
|
+
- charlie@charliejonas.co.uk
|
44
46
|
executables: []
|
45
47
|
extensions: []
|
46
48
|
extra_rdoc_files: []
|
47
49
|
files:
|
50
|
+
- ".editorconfig"
|
48
51
|
- ".gitignore"
|
52
|
+
- CHANGELOG.md
|
49
53
|
- Gemfile
|
50
54
|
- Gemfile.lock
|
51
55
|
- LICENSE
|
@@ -54,6 +58,7 @@ files:
|
|
54
58
|
- examples/sinatra/Gemfile.lock
|
55
59
|
- examples/sinatra/README.md
|
56
60
|
- examples/sinatra/config.ru
|
61
|
+
- examples/sinatra/ucamravenexample.rb
|
57
62
|
- lib/omniauth-ucam-raven.rb
|
58
63
|
- lib/omniauth-ucam-raven/version.rb
|
59
64
|
- lib/omniauth/strategies/ucam-raven.rb
|
@@ -77,9 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
82
|
- !ruby/object:Gem::Version
|
78
83
|
version: '0'
|
79
84
|
requirements: []
|
80
|
-
|
81
|
-
rubygems_version: 2.7.6
|
85
|
+
rubygems_version: 3.1.2
|
82
86
|
signing_key:
|
83
87
|
specification_version: 4
|
84
|
-
summary:
|
88
|
+
summary: OmniAuth strategy for Cambridge University's Raven SSO system
|
85
89
|
test_files: []
|