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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 292db91ca4ceff8717b798ac767bbb84c499cd9031343d923804b16bfc744fb2
4
- data.tar.gz: 6029057163f1176a19f577f831e2a54b085e8f506f299c6eaa343206f3295f04
3
+ metadata.gz: 18905b9dcd1574b2f30aabfd3f64a724de65c7bea249cd634f8accdb020971ba
4
+ data.tar.gz: a6c475afba94a4c864fd9b842edf6e622b5a4b724883706bcda3da464170c81b
5
5
  SHA512:
6
- metadata.gz: 88873ba31e6f607990e1cfd358ce9f82855e335fdf22ad6ab57e3f11797410599f89ebce2add126d0dae875105a74162e7deb430c50e08c18eafc4fea795120d
7
- data.tar.gz: b6287b6b4ffc548664aafe778a4c8db5346371dd7a43ae4087c15da453e8f005cf985a02be756feec492c66a1f28880fc385ebaeda320206084453e995117a88
6
+ metadata.gz: 784b0877cc602ca311b8125c8a469359954b62bb0bb38092ce5e324d4c5b6f94794942b9402dc5e8b1f03338801c3ef92e48ed0daac78090f13818b8c6030557
7
+ data.tar.gz: 274c9a9fcddeb0cdfc57d8441c1a0edaece1b851c24e441219a6d7ab919800ef5c7b8c2e2aa8473cf8b4feb1498aeb73c3c29f17078e323221724d225e01790f
@@ -0,0 +1,11 @@
1
+ # https://editorconfig.org
2
+
3
+ root = true
4
+
5
+ [*]
6
+ end_of_line = lf
7
+ insert_final_newline = true
8
+ trim_trailing_whitespace = true
9
+ charset = utf-8
10
+ indent_style = space
11
+ indent_size = 2
@@ -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.
@@ -1,24 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- omniauth-ucam-raven (1.0.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 (3.5.7)
11
- omniauth (1.8.1)
12
- hashie (>= 3.4.6, < 3.6.0)
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.0.6)
14
+ rack (2.2.2)
15
15
 
16
16
  PLATFORMS
17
17
  ruby
18
18
 
19
19
  DEPENDENCIES
20
- bundler (~> 1.5)
20
+ bundler (~> 2.0)
21
21
  omniauth-ucam-raven!
22
22
 
23
23
  BUNDLED WITH
24
- 1.16.6
24
+ 2.1.4
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 Charlie Jonas
3
+ Copyright (c) 2018-2020 Charlie Jonas
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
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
- You will need to download the public key used by the Raven service to sign responses and store it somewhere that is not writable by your web application.
18
- Download the PEM formated PKCS#1 RSA public key from the Raven project pages [here](https://raven.cam.ac.uk/project/keys/).
19
- You will also need the key ID that is currently in use - as of August 2004 this is 2.
20
- From this point on, we assume the full UNIX path and key ID are in the KEY_PATH and KEY_ID environment variables respectively.
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
- You can integrate the strategy into your middleware in a `config.ru`:
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
- provider :ucamraven, ENV['KEY_ID'], ENV['KEY_PATH']
38
+ key_data = [[ENV['KEY_ID'], ENV['KEY_PATH']]]
39
+ provider :ucamraven, key_data
27
40
  end
28
41
  ```
29
42
 
30
- If you're using Rails, you'll want to add the following to an initialisers eg. `config/initializers/omniauth.rb` and then restart your application:
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
- Rails.application.config.middleware.use OmniAuth::Builder do
34
- provider :ucamraven, ENV['KEY_ID'], ENV['KEY_PATH']
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
- For a full list of options that you can configure when setting `:ucamraven` as provider you will need to look
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
- For additional information, please refer to the [OmniAuth wiki](https://github.com/intridea/omniauth/wiki).
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/config.ru) for a hands-on example.
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. Copyright (c) 2018 Charlie Jonas.
84
+ omniauth-ucam-raven is released under the MIT License.
85
+ Copyright (c) 2018-2020 Charlie Jonas.
@@ -1,6 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'sinatra'
4
- gem 'omniauth'
5
- gem 'omniauth-ucam-raven', :path => '../../'
6
- gem 'multi_json'
4
+ gem 'omniauth-ucam-raven', path: '../..'
@@ -1,36 +1,35 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- omniauth-ucam-raven (1.0.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 (3.5.7)
11
- multi_json (1.13.1)
12
- mustermann (1.0.3)
13
- omniauth (1.8.1)
14
- hashie (>= 3.4.6, < 3.6.0)
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.0.6)
17
- rack-protection (2.0.4)
16
+ rack (2.2.2)
17
+ rack-protection (2.0.8.1)
18
18
  rack
19
- sinatra (2.0.4)
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.4)
23
+ rack-protection (= 2.0.8.1)
23
24
  tilt (~> 2.0)
24
- tilt (2.0.8)
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.16.6
35
+ 2.1.4
@@ -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 Raven project pages [here](https://raven.cam.ac.uk/project/keys/) before you continue.
5
- At the time of writing (November 2018), the key ID in use to sign responses was number two.
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. Run the `rackup` command
12
- 4. Navigate to http://localhost:4567 and complete the login process
11
+ 3. `bundle install`
12
+ 4. `bundle exec rackup`
13
+ 5. Navigate to http://localhost:4567
@@ -1,29 +1,7 @@
1
1
  require 'rubygems'
2
- require 'bundler/setup'
3
- require 'sinatra'
4
- require 'omniauth-ucam-raven'
5
- require 'uri'
2
+ require 'bundler'
6
3
 
7
- class UcamRavenExample < Sinatra::Base
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
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module UcamRaven
3
- VERSION = "1.0.1"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  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://raven.cam.ac.uk/project/waa2wls-protocol.txt
16
- option :url, 'https://raven.cam.ac.uk/auth/authenticate.html'
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, 90
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
- # The RSA key ID and the location on the filesystem where it's stored.
27
- option :key_id, nil
28
- option :key_path, nil
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 = "#{options.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 << "&params=#{URI::encode options.params}" if options.params
40
56
  url << "&date=#{date_to_rfc3339}" if options.date
41
- # skew is DEPRECATED - we don't pass it to the WLS.
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 we get what we're expecting.
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 id.
69
- return fail!(:unexpected_rsa_key_id) unless wls_response[12].to_i == options.key_id
70
-
71
- # Check the response RSA signature.
72
- signed_part = wls_response.first(12).join('!')
73
- base64_part = wls_response[13].tr('-._','+/=')
74
- signature = Base64.decode64(base64_part)
75
- key = OpenSSL::PKey::RSA.new File.read options.key_path
76
- digest = OpenSSL::Digest::SHA1.new
77
- return fail!(:rsa_signature_check_failed) unless key.verify(digest, signature, signed_part)
78
-
79
- # Done all we need to do; call super.
80
- super
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
- end
175
-
191
+ end
176
192
  end
177
193
  end
178
194
  end
@@ -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 = "An OmniAuth strategy for Cambridge University's Raven SSO system"
10
- s.description = "An OmniAuth strategy for Cambridge University's Raven SSO system"
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 = ['devel@charliejonas.co.uk']
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', '~> 1.5'
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: 1.0.1
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: 2018-11-18 00:00:00.000000000 Z
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: '1.5'
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: '1.5'
41
- description: An OmniAuth strategy for Cambridge University's Raven SSO system
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
- - devel@charliejonas.co.uk
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
- rubyforge_project:
81
- rubygems_version: 2.7.6
85
+ rubygems_version: 3.1.2
82
86
  signing_key:
83
87
  specification_version: 4
84
- summary: An OmniAuth strategy for Cambridge University's Raven SSO system
88
+ summary: OmniAuth strategy for Cambridge University's Raven SSO system
85
89
  test_files: []