omniauth-oauth2 1.3.1 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 414a1411316ba3f8463a30120106b6a89bb62c50
4
- data.tar.gz: 6c2e2383286d4f5ed5e86daf82d74dda2611d716
2
+ SHA256:
3
+ metadata.gz: '0496e01a0a03c432891358ac0bbe4ed744560f47c88c2cc32a999feafc78e576'
4
+ data.tar.gz: 6196ba4a1880c328392de4e145434fccf1c4a64fdbc8f87c94ffc2e274bb509b
5
5
  SHA512:
6
- metadata.gz: b62f9e18f9b832f556de30b1a3f085c26266dbd108c9244d441320960e4e0e6e30fb3e9ffe5addf1adf687cab8999f255c0351e3efb2a2daef1cc21e450c1f1f
7
- data.tar.gz: b83fb3b97ef73310a898d204eed6f6501eba58535eb8829129a239f2a349ea0620cb78477697f1a75e3fcf1d600f40763340dcb27be80c12c7aff382949fce16
6
+ metadata.gz: 5db83ecb687e9fe790f3c76f3c831aac7a6e2e444e97cf532b08629caf27400bbc242e474c50ba07d1d7e1a39dce6468a62e751981069e191483d5f99bd009d8
7
+ data.tar.gz: 3b66b0a2813184f867646699823b7434a4d7b9ce08594c6eaded5b4b37b965bc6cbae932087fe1bfd446fb126e3245d8b5fe0ec47798ef8f81083f251933d1a9
@@ -0,0 +1,49 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-18.04
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu, macos]
16
+ ruby: [2.5, 2.6, 2.7, head, debug, truffleruby, truffleruby-head]
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ bundler-cache: true
24
+ - name: Install dependencies
25
+ run: bundle install
26
+ - name: Run tests
27
+ run: bundle exec rake
28
+ test-jruby:
29
+ runs-on: ubuntu-18.04
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ os: [ubuntu, macos]
34
+ jruby: [jruby, jruby-head]
35
+ steps:
36
+ - uses: actions/checkout@v2
37
+ - name: Set up Ruby
38
+ uses: ruby/setup-ruby@v1
39
+ with:
40
+ ruby-version: ${{ matrix.jruby }}
41
+ bundler-cache: true
42
+ - name: Install dependencies
43
+ env:
44
+ JRUBY_OPTS: --debug
45
+ run: bundle install
46
+ - name: Run tests
47
+ env:
48
+ JRUBY_OPTS: --debug
49
+ run: bundle exec rake
@@ -1,10 +1,35 @@
1
- Metrics/BlockNesting:
2
- Max: 2
1
+ AllCops:
2
+ NewCops: enable
3
+
4
+ Gemspec/RequiredRubyVersion:
5
+ Enabled: false
3
6
 
4
- Metrics/LineLength:
7
+ Layout/AccessModifierIndentation:
8
+ EnforcedStyle: outdent
9
+
10
+ Layout/LineLength:
5
11
  AllowURI: true
6
12
  Enabled: false
7
13
 
14
+ Layout/SpaceInsideHashLiteralBraces:
15
+ EnforcedStyle: no_space
16
+
17
+ Lint/MissingSuper:
18
+ Enabled: false
19
+
20
+ Metrics/AbcSize:
21
+ Max: 18
22
+
23
+ Metrics/BlockLength:
24
+ Exclude:
25
+ - spec/omniauth/strategies/oauth2_spec.rb
26
+
27
+ Metrics/BlockNesting:
28
+ Max: 2
29
+
30
+ Metrics/ClassLength:
31
+ Max: 110
32
+
8
33
  Metrics/MethodLength:
9
34
  CountComments: false
10
35
  Max: 10
@@ -13,8 +38,9 @@ Metrics/ParameterLists:
13
38
  Max: 4
14
39
  CountKeywordArgs: true
15
40
 
16
- Style/AccessModifierIndentation:
17
- EnforcedStyle: outdent
41
+ Naming/FileName:
42
+ Exclude:
43
+ - lib/omniauth-oauth2.rb
18
44
 
19
45
  Style/CollectionMethods:
20
46
  PreferredMethods:
@@ -29,14 +55,26 @@ Style/Documentation:
29
55
  Style/DoubleNegation:
30
56
  Enabled: false
31
57
 
58
+ Style/ExpandPathArguments:
59
+ Enabled: false
60
+
61
+ Style/FrozenStringLiteralComment:
62
+ Enabled: false
63
+
32
64
  Style/HashSyntax:
33
65
  EnforcedStyle: hash_rockets
34
66
 
35
- Style/SpaceInsideHashLiteralBraces:
36
- EnforcedStyle: no_space
67
+ Style/StderrPuts:
68
+ Enabled: false
37
69
 
38
70
  Style/StringLiterals:
39
71
  EnforcedStyle: double_quotes
40
72
 
41
- Style/TrailingComma:
42
- EnforcedStyleForMultiline: 'comma'
73
+ Style/TrailingCommaInArguments:
74
+ EnforcedStyleForMultiline: comma
75
+
76
+ Style/TrailingCommaInHashLiteral:
77
+ EnforcedStyleForMultiline: comma
78
+
79
+ Style/TrailingCommaInArrayLiteral:
80
+ EnforcedStyleForMultiline: comma
@@ -1,19 +1,19 @@
1
- before_install: gem install bundler
1
+ bundler_args: --without development
2
+ before_install:
3
+ - gem update --system
4
+ - gem update bundler
5
+ cache: bundler
2
6
  env:
3
7
  global:
4
8
  - JRUBY_OPTS="$JRUBY_OPTS --debug"
5
9
  language: ruby
6
10
  rvm:
7
- - 1.8.7
8
- - 1.9.3
9
- - 2.0.0
10
- - 2.1
11
- - 2.2
12
- - jruby-18mode
13
- - jruby-19mode
11
+ - jruby-9000
12
+ - 2.4.4
13
+ - 2.5.3
14
14
  - jruby-head
15
- - rbx-2
16
15
  - ruby-head
16
+ - truffleruby-head
17
17
  matrix:
18
18
  allow_failures:
19
19
  - rvm: jruby-head
data/Gemfile CHANGED
@@ -1,17 +1,18 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
- gem "rake"
3
+ gem "rake", "~> 12.0"
4
4
 
5
5
  group :test do
6
+ gem "addressable", "~> 2.3.8", :platforms => %i[jruby ruby_18]
6
7
  gem "coveralls"
7
- gem "json", :platforms => [:jruby, :ruby_18, :ruby_19]
8
- gem "mime-types", "~> 1.25", :platforms => [:jruby, :ruby_18]
8
+ gem "json", :platforms => %i[jruby ruby_18 ruby_19]
9
+ gem "mime-types", "~> 1.25", :platforms => %i[jruby ruby_18]
9
10
  gem "rack-test"
10
- gem "rest-client", "~> 1.6.0", :platforms => [:jruby, :ruby_18]
11
+ gem "rest-client", "~> 1.8.0", :platforms => %i[jruby ruby_18]
11
12
  gem "rspec", "~> 3.2"
12
- gem "rubocop", ">= 0.30", :platforms => [:ruby_19, :ruby_20, :ruby_21, :ruby_22]
13
+ gem "rubocop", ">= 0.51", :platforms => %i[ruby_19 ruby_20 ruby_21 ruby_22 ruby_23 ruby_24]
13
14
  gem "simplecov", ">= 0.9"
14
- gem "webmock"
15
+ gem "webmock", "~> 3.0"
15
16
  end
16
17
 
17
18
  # Specify your gem's dependencies in omniauth-oauth2.gemspec
data/README.md CHANGED
@@ -1,14 +1,13 @@
1
1
  # OmniAuth OAuth2
2
2
 
3
3
  [![Gem Version](http://img.shields.io/gem/v/omniauth-oauth2.svg)][gem]
4
- [![Build Status](http://img.shields.io/travis/intridea/omniauth-oauth2.svg)][travis]
5
- [![Dependency Status](http://img.shields.io/gemnasium/intridea/omniauth-oauth2.svg)][gemnasium]
6
- [![Code Climate](http://img.shields.io/codeclimate/github/intridea/omniauth-oauth2.svg)][codeclimate]
4
+ [![Build Status](http://img.shields.io/travis/omniauth/omniauth-oauth2.svg)][travis]
5
+ [![Code Climate](http://img.shields.io/codeclimate/maintainability/intridea/omniauth-oauth2.svg)][codeclimate]
7
6
  [![Coverage Status](http://img.shields.io/coveralls/intridea/omniauth-oauth2.svg)][coveralls]
7
+ [![Security](https://hakiri.io/github/omniauth/omniauth-oauth2/master.svg)](https://hakiri.io/github/omniauth/omniauth-oauth2/master)
8
8
 
9
9
  [gem]: https://rubygems.org/gems/omniauth-oauth2
10
- [travis]: http://travis-ci.org/intridea/omniauth-oauth2
11
- [gemnasium]: https://gemnasium.com/intridea/omniauth-oauth2
10
+ [travis]: http://travis-ci.org/omniauth/omniauth-oauth2
12
11
  [codeclimate]: https://codeclimate.com/github/intridea/omniauth-oauth2
13
12
  [coveralls]: https://coveralls.io/r/intridea/omniauth-oauth2
14
13
 
@@ -33,6 +32,10 @@ module OmniAuth
33
32
  # This is where you pass the options you would pass when
34
33
  # initializing your consumer from the OAuth gem.
35
34
  option :client_options, {:site => "https://api.somesite.com"}
35
+
36
+ # You may specify that your strategy should use PKCE by setting
37
+ # the pkce option to true: https://tools.ietf.org/html/rfc7636
38
+ option :pkce, true
36
39
 
37
40
  # These are called after authentication has succeeded. If
38
41
  # possible, you should try to set the UID without making
@@ -63,5 +66,3 @@ end
63
66
  ```
64
67
 
65
68
  That's pretty much it!
66
-
67
- [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/intridea/omniauth-oauth2/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env rake
2
+
2
3
  require "bundler/gem_tasks"
3
4
  require "rspec/core/rake_task"
4
5
 
@@ -15,4 +16,4 @@ rescue LoadError
15
16
  end
16
17
  end
17
18
 
18
- task :default => [:spec, :rubocop]
19
+ task :default => %i[spec rubocop]
@@ -1,2 +1,2 @@
1
- require "omniauth-oauth2/version" # rubocop:disable FileName
1
+ require "omniauth-oauth2/version"
2
2
  require "omniauth/strategies/oauth2"
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module OAuth2
3
- VERSION = "1.3.1"
3
+ VERSION = "1.7.1".freeze
4
4
  end
5
5
  end
@@ -18,17 +18,28 @@ module OmniAuth
18
18
  OmniAuth::Strategy.included(subclass)
19
19
  end
20
20
 
21
- args [:client_id, :client_secret]
21
+ args %i[client_id client_secret]
22
22
 
23
23
  option :client_id, nil
24
24
  option :client_secret, nil
25
25
  option :client_options, {}
26
26
  option :authorize_params, {}
27
- option :authorize_options, [:scope]
27
+ option :authorize_options, %i[scope state]
28
28
  option :token_params, {}
29
29
  option :token_options, []
30
30
  option :auth_token_params, {}
31
31
  option :provider_ignores_state, false
32
+ option :pkce, false
33
+ option :pkce_verifier, nil
34
+ option :pkce_options, {
35
+ :code_challenge => proc { |verifier|
36
+ Base64.urlsafe_encode64(
37
+ Digest::SHA2.digest(verifier),
38
+ :padding => false,
39
+ )
40
+ },
41
+ :code_challenge_method => "S256",
42
+ }
32
43
 
33
44
  attr_accessor :access_token
34
45
 
@@ -36,15 +47,11 @@ module OmniAuth
36
47
  ::OAuth2::Client.new(options.client_id, options.client_secret, deep_symbolize(options.client_options))
37
48
  end
38
49
 
39
- def callback_url
40
- full_host + script_name + callback_path
41
- end
42
-
43
50
  credentials do
44
51
  hash = {"token" => access_token.token}
45
- hash.merge!("refresh_token" => access_token.refresh_token) if access_token.expires? && access_token.refresh_token
46
- hash.merge!("expires_at" => access_token.expires_at) if access_token.expires?
47
- hash.merge!("expires" => access_token.expires?)
52
+ hash["refresh_token"] = access_token.refresh_token if access_token.expires? && access_token.refresh_token
53
+ hash["expires_at"] = access_token.expires_at if access_token.expires?
54
+ hash["expires"] = access_token.expires?
48
55
  hash
49
56
  end
50
57
 
@@ -52,22 +59,29 @@ module OmniAuth
52
59
  redirect client.auth_code.authorize_url({:redirect_uri => callback_url}.merge(authorize_params))
53
60
  end
54
61
 
55
- def authorize_params
62
+ def authorize_params # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
56
63
  options.authorize_params[:state] = SecureRandom.hex(24)
57
- params = options.authorize_params.merge(options_for("authorize"))
64
+
58
65
  if OmniAuth.config.test_mode
59
66
  @env ||= {}
60
67
  @env["rack.session"] ||= {}
61
68
  end
69
+
70
+ params = options.authorize_params
71
+ .merge(options_for("authorize"))
72
+ .merge(pkce_authorize_params)
73
+
74
+ session["omniauth.pkce.verifier"] = options.pkce_verifier if options.pkce
62
75
  session["omniauth.state"] = params[:state]
76
+
63
77
  params
64
78
  end
65
79
 
66
80
  def token_params
67
- options.token_params.merge(options_for("token"))
81
+ options.token_params.merge(options_for("token")).merge(pkce_token_params)
68
82
  end
69
83
 
70
- def callback_phase # rubocop:disable AbcSize, CyclomaticComplexity, MethodLength, PerceivedComplexity
84
+ def callback_phase # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
71
85
  error = request.params["error_reason"] || request.params["error"]
72
86
  if error
73
87
  fail!(error, CallbackError.new(request.params["error"], request.params["error_description"] || request.params["error_reason"], request.params["error_uri"]))
@@ -88,23 +102,44 @@ module OmniAuth
88
102
 
89
103
  protected
90
104
 
105
+ def pkce_authorize_params
106
+ return {} unless options.pkce
107
+
108
+ options.pkce_verifier = SecureRandom.hex(64)
109
+
110
+ # NOTE: see https://tools.ietf.org/html/rfc7636#appendix-A
111
+ {
112
+ :code_challenge => options.pkce_options[:code_challenge]
113
+ .call(options.pkce_verifier),
114
+ :code_challenge_method => options.pkce_options[:code_challenge_method],
115
+ }
116
+ end
117
+
118
+ def pkce_token_params
119
+ return {} unless options.pkce
120
+
121
+ {:code_verifier => session.delete("omniauth.pkce.verifier")}
122
+ end
123
+
91
124
  def build_access_token
92
125
  verifier = request.params["code"]
93
126
  client.auth_code.get_token(verifier, {:redirect_uri => callback_url}.merge(token_params.to_hash(:symbolize_keys => true)), deep_symbolize(options.auth_token_params))
94
127
  end
95
128
 
96
129
  def deep_symbolize(options)
97
- hash = {}
98
- options.each do |key, value|
130
+ options.each_with_object({}) do |(key, value), hash|
99
131
  hash[key.to_sym] = value.is_a?(Hash) ? deep_symbolize(value) : value
100
132
  end
101
- hash
102
133
  end
103
134
 
104
135
  def options_for(option)
105
136
  hash = {}
106
137
  options.send(:"#{option}_options").select { |key| options[key] }.each do |key|
107
- hash[key.to_sym] = options[key]
138
+ hash[key.to_sym] = if options[key].respond_to?(:call)
139
+ options[key].call(env)
140
+ else
141
+ options[key]
142
+ end
108
143
  end
109
144
  hash
110
145
  end
@@ -3,22 +3,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "omniauth-oauth2/version"
4
4
 
5
5
  Gem::Specification.new do |gem|
6
- gem.add_dependency "oauth2", "~> 1.0"
7
- gem.add_dependency "omniauth", "~> 1.2"
6
+ gem.add_dependency "oauth2", "~> 1.4"
7
+ gem.add_dependency "omniauth", [">= 1.9", "< 3"]
8
8
 
9
- gem.add_development_dependency "bundler", "~> 1.0"
9
+ gem.add_development_dependency "bundler", "~> 2.0"
10
10
 
11
- gem.authors = ["Michael Bleigh", "Erik Michaels-Ober"]
12
- gem.email = ["michael@intridea.com", "sferik@gmail.com"]
11
+ gem.authors = ["Michael Bleigh", "Erik Michaels-Ober", "Tom Milewski"]
12
+ gem.email = ["michael@intridea.com", "sferik@gmail.com", "tmilewski@gmail.com"]
13
13
  gem.description = "An abstract OAuth2 strategy for OmniAuth."
14
14
  gem.summary = gem.description
15
- gem.homepage = "https://github.com/intridea/omniauth-oauth2"
16
- gem.licenses = %w(MIT)
15
+ gem.homepage = "https://github.com/omniauth/omniauth-oauth2"
16
+ gem.licenses = %w[MIT]
17
17
 
18
18
  gem.executables = `git ls-files -- bin/*`.split("\n").collect { |f| File.basename(f) }
19
19
  gem.files = `git ls-files`.split("\n")
20
20
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
21
  gem.name = "omniauth-oauth2"
22
- gem.require_paths = %w(lib)
22
+ gem.require_paths = %w[lib]
23
23
  gem.version = OmniAuth::OAuth2::VERSION
24
24
  end
@@ -49,9 +49,10 @@ describe OmniAuth::Strategies::OAuth2 do
49
49
  end
50
50
 
51
51
  it "includes top-level options that are marked as :authorize_options" do
52
- instance = subject.new("abc", "def", :authorize_options => [:scope, :foo, :state], :scope => "bar", :foo => "baz")
52
+ instance = subject.new("abc", "def", :authorize_options => %i[scope foo state], :scope => "bar", :foo => "baz")
53
53
  expect(instance.authorize_params["scope"]).to eq("bar")
54
54
  expect(instance.authorize_params["foo"]).to eq("baz")
55
+ expect(instance.authorize_params["state"]).not_to be_empty
55
56
  end
56
57
 
57
58
  it "includes random state in the authorize params" do
@@ -59,6 +60,19 @@ describe OmniAuth::Strategies::OAuth2 do
59
60
  expect(instance.authorize_params.keys).to eq(["state"])
60
61
  expect(instance.session["omniauth.state"]).not_to be_empty
61
62
  end
63
+
64
+ it "includes custom state in the authorize params" do
65
+ instance = subject.new("abc", "def", :state => proc { "qux" })
66
+ expect(instance.authorize_params.keys).to eq(["state"])
67
+ expect(instance.session["omniauth.state"]).to eq("qux")
68
+ end
69
+
70
+ it "includes PKCE parameters if enabled" do
71
+ instance = subject.new("abc", "def", :pkce => true)
72
+ expect(instance.authorize_params[:code_challenge]).to be_a(String)
73
+ expect(instance.authorize_params[:code_challenge_method]).to eq("S256")
74
+ expect(instance.session["omniauth.pkce.verifier"]).to be_a(String)
75
+ end
62
76
  end
63
77
 
64
78
  describe "#token_params" do
@@ -70,9 +84,16 @@ describe OmniAuth::Strategies::OAuth2 do
70
84
  end
71
85
 
72
86
  it "includes top-level options that are marked as :authorize_options" do
73
- instance = subject.new("abc", "def", :token_options => [:scope, :foo], :scope => "bar", :foo => "baz")
87
+ instance = subject.new("abc", "def", :token_options => %i[scope foo], :scope => "bar", :foo => "baz")
74
88
  expect(instance.token_params).to eq("scope" => "bar", "foo" => "baz")
75
89
  end
90
+
91
+ it "includes the PKCE code_verifier if enabled" do
92
+ instance = subject.new("abc", "def", :pkce => true)
93
+ # setup session
94
+ instance.authorize_params
95
+ expect(instance.token_params[:code_verifier]).to be_a(String)
96
+ end
76
97
  end
77
98
 
78
99
  describe "#callback_phase" do
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
8
8
  - Erik Michaels-Ober
9
+ - Tom Milewski
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2015-06-22 00:00:00.000000000 Z
13
+ date: 2021-01-11 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: oauth2
@@ -17,50 +18,58 @@ dependencies:
17
18
  requirements:
18
19
  - - "~>"
19
20
  - !ruby/object:Gem::Version
20
- version: '1.0'
21
+ version: '1.4'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - "~>"
26
27
  - !ruby/object:Gem::Version
27
- version: '1.0'
28
+ version: '1.4'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: omniauth
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - "~>"
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '1.9'
36
+ - - "<"
33
37
  - !ruby/object:Gem::Version
34
- version: '1.2'
38
+ version: '3'
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
38
42
  requirements:
39
- - - "~>"
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '1.9'
46
+ - - "<"
40
47
  - !ruby/object:Gem::Version
41
- version: '1.2'
48
+ version: '3'
42
49
  - !ruby/object:Gem::Dependency
43
50
  name: bundler
44
51
  requirement: !ruby/object:Gem::Requirement
45
52
  requirements:
46
53
  - - "~>"
47
54
  - !ruby/object:Gem::Version
48
- version: '1.0'
55
+ version: '2.0'
49
56
  type: :development
50
57
  prerelease: false
51
58
  version_requirements: !ruby/object:Gem::Requirement
52
59
  requirements:
53
60
  - - "~>"
54
61
  - !ruby/object:Gem::Version
55
- version: '1.0'
62
+ version: '2.0'
56
63
  description: An abstract OAuth2 strategy for OmniAuth.
57
64
  email:
58
65
  - michael@intridea.com
59
66
  - sferik@gmail.com
67
+ - tmilewski@gmail.com
60
68
  executables: []
61
69
  extensions: []
62
70
  extra_rdoc_files: []
63
71
  files:
72
+ - ".github/workflows/main.yml"
64
73
  - ".gitignore"
65
74
  - ".rspec"
66
75
  - ".rubocop.yml"
@@ -75,7 +84,7 @@ files:
75
84
  - omniauth-oauth2.gemspec
76
85
  - spec/helper.rb
77
86
  - spec/omniauth/strategies/oauth2_spec.rb
78
- homepage: https://github.com/intridea/omniauth-oauth2
87
+ homepage: https://github.com/omniauth/omniauth-oauth2
79
88
  licenses:
80
89
  - MIT
81
90
  metadata: {}
@@ -94,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
103
  - !ruby/object:Gem::Version
95
104
  version: '0'
96
105
  requirements: []
97
- rubyforge_project:
98
- rubygems_version: 2.4.8
106
+ rubygems_version: 3.0.3
99
107
  signing_key:
100
108
  specification_version: 4
101
109
  summary: An abstract OAuth2 strategy for OmniAuth.