omniauth-rails_csrf_protection 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bbf4c1c69045d3b8841a8e002fad5367924f1d3656bb030473da95ec61681878
4
+ data.tar.gz: 57f056afa7f51d2722129715a074aa19afeac9acd58a340c5c063aff7b8436d7
5
+ SHA512:
6
+ metadata.gz: c64a7e5a8c3252ceebe112312fa9dfa346c7c337c2ed528f72ab7d140d540333e99c580143bad2044a7fe57697360cf7be6cd36672e97224fa48f21a6d758b6d
7
+ data.tar.gz: 7fdf180d08eb01a57acbf61f3f2a70754a433eee0fad1c31663f0b9bffa571ef4c45ada64669475ef6391b636437e3ae590e1bc27c785756278e1524f524cbfc
@@ -0,0 +1,87 @@
1
+ version: 2.1
2
+
3
+ build_steps: &build_steps
4
+ steps:
5
+ - checkout
6
+ - run:
7
+ name: Install dependencies
8
+ command: bundle update
9
+ - run:
10
+ command: |-
11
+ echo "Ruby version:" $(ruby -v)
12
+ echo "Rails version: " $(rails -v)
13
+ name: Show build information
14
+ - run:
15
+ name: Run tests
16
+ command: rake
17
+
18
+ ruby-2-5: &ruby-2-5
19
+ docker:
20
+ - image: circleci/ruby:2.5
21
+
22
+ ruby-2-6: &ruby-2-6
23
+ docker:
24
+ - image: circleci/ruby:2.6
25
+
26
+ rails-5-1: &rails-5-1
27
+ environment:
28
+ RAILS_VERSION: "~> 5.1.0"
29
+
30
+ rails-5-2: &rails-5-2
31
+ environment:
32
+ RAILS_VERSION: "~> 5.2.0"
33
+
34
+ rails-6-0: &rails-6-0
35
+ environment:
36
+ RAILS_VERSION: "6.0.0.rc1"
37
+
38
+ rails-edge: &rails-edge
39
+ environment:
40
+ RAILS_BRANCH: "master"
41
+
42
+ jobs:
43
+ "ruby-2-5-rails-5-1":
44
+ <<: *ruby-2-5
45
+ <<: *rails-5-1
46
+ <<: *build_steps
47
+ "ruby-2-5-rails-5-2":
48
+ <<: *ruby-2-5
49
+ <<: *rails-5-2
50
+ <<: *build_steps
51
+ "ruby-2-5-rails-6-0":
52
+ <<: *ruby-2-5
53
+ <<: *rails-6-0
54
+ <<: *build_steps
55
+ "ruby-2-5-rails-edge":
56
+ <<: *ruby-2-5
57
+ <<: *rails-edge
58
+ <<: *build_steps
59
+ "ruby-2-6-rails-5-1":
60
+ <<: *ruby-2-6
61
+ <<: *rails-5-1
62
+ <<: *build_steps
63
+ "ruby-2-6-rails-5-2":
64
+ <<: *ruby-2-6
65
+ <<: *rails-5-2
66
+ <<: *build_steps
67
+ "ruby-2-6-rails-6-0":
68
+ <<: *ruby-2-6
69
+ <<: *rails-6-0
70
+ <<: *build_steps
71
+ "ruby-2-6-rails-edge":
72
+ <<: *ruby-2-6
73
+ <<: *rails-edge
74
+ <<: *build_steps
75
+
76
+ workflows:
77
+ version: 2
78
+ build:
79
+ jobs:
80
+ - "ruby-2-5-rails-5-1"
81
+ - "ruby-2-5-rails-5-2"
82
+ - "ruby-2-5-rails-6-0"
83
+ - "ruby-2-5-rails-edge"
84
+ - "ruby-2-6-rails-5-1"
85
+ - "ruby-2-6-rails-5-2"
86
+ - "ruby-2-6-rails-6-0"
87
+ - "ruby-2-6-rails-edge"
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.rubocop-*
3
+ /.yardoc
4
+ /Gemfile.lock
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
@@ -0,0 +1,9 @@
1
+ inherit_from:
2
+ - https://raw.githubusercontent.com/cookpad/global-style-guides/master/.rubocop.yml
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.5
6
+
7
+ # Disable this as this does not apply to rack-test
8
+ Rails/HttpPositionalArguments:
9
+ Enabled: false
@@ -0,0 +1,75 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age,
8
+ body size, disability, ethnicity, gender identity and expression, level of
9
+ experience, nationality, personal appearance, race, religion, or sexual
10
+ identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an
52
+ appointed representative at an online or offline event. Representation of a
53
+ project may be further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at kaihatsu@cookpad.com. All complaints
59
+ will be reviewed and investigated and will result in a response that is deemed
60
+ necessary and appropriate to the circumstances. The project team is obligated
61
+ to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
71
+ version 1.4, available at
72
+ [http://contributor-covenant.org/version/1/4][version]
73
+
74
+ [homepage]: http://contributor-covenant.org
75
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "https://rubygems.org"
2
+
3
+ # rubocop:disable Bundler/DuplicatedGem
4
+ if ENV["RAILS_VERSION"]
5
+ gem "rails", ENV["RAILS_VERSION"]
6
+ elsif ENV["RAILS_BRANCH"]
7
+ gem "rails", git: "https://github.com/rails/rails.git", branch: ENV["RAILS_BRANCH"]
8
+ end
9
+ # rubocop:enable Bundler/DuplicatedGem
10
+
11
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Cookpad Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,48 @@
1
+ # OmniAuth - Rails CSRF Protection
2
+
3
+ This gem provides a mitigation against CVE-2015-9284 (Cross-Site Request
4
+ Forgery on the request phrase when using OmniAuth gem with a Ruby on Rails
5
+ application) by implementing a CSRF token verifier that directly utilize
6
+ `ActionController::RequestForgeryProtection` code from Rails.
7
+
8
+ ## Usage
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem "omniauth-rails_csrf_protection"
14
+ ```
15
+
16
+ Then run `bundle install` to install this gem.
17
+
18
+ You will then need to verify that all links in your application that would
19
+ initiate OAuth request phrase are being converted to a HTTP POST form that
20
+ contains `authenticity_token` value. This might simply be done by changing all
21
+ `link_to` to `button_to`, or use `link_to ..., method: :post`.
22
+
23
+ ## Under the Hood
24
+
25
+ This gem does a few things to your application:
26
+
27
+ * Disable access to the OAuth request phrase using HTTP GET method.
28
+ * Insert a Rails CSRF token verifier at before request phrase.
29
+
30
+ These actions mitigate you from the attack vector described in CVE-2015-9284.
31
+
32
+ ## Contributing
33
+
34
+ Bug reports and pull requests are welcome on GitHub. This project is
35
+ intended to be a safe, welcoming space for collaboration, and contributors are
36
+ expected to adhere to the
37
+ [Contributor Covenant](http://contributor-covenant.org) code of conduct.
38
+
39
+ ## License
40
+
41
+ The gem is available as open source under the terms of the
42
+ [MIT License](https://opensource.org/licenses/MIT).
43
+
44
+ ## Code of Conduct
45
+
46
+ Everyone interacting in the this project’s codebases, issue trackers, chat
47
+ rooms and mailing lists is expected to follow the
48
+ [code of conduct](https://github.com/cookpad/omniauth-rails_csrf_protection/blob/master/CODE_OF_CONDUCT.md).
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task default: :test
@@ -0,0 +1,2 @@
1
+ require "omniauth/rails_csrf_protection/version"
2
+ require "omniauth/rails_csrf_protection/railtie"
@@ -0,0 +1,12 @@
1
+ require "omniauth/rails_csrf_protection/token_verifier"
2
+
3
+ module OmniAuth
4
+ module RailsCsrfProtection
5
+ class Railtie < Rails::Railtie
6
+ initializer "omniauth-rails_csrf_protection.initialize" do
7
+ OmniAuth.config.allowed_request_methods = [:post]
8
+ OmniAuth.config.before_request_phase = TokenVerifier.new
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ require "active_support/configurable"
2
+ require "action_controller"
3
+
4
+ module OmniAuth
5
+ module RailsCsrfProtection
6
+ # Provides a callable method that verifies Cross-Site Request Forgery
7
+ # protection token. This class includes
8
+ # `ActionController::RequestForgeryProtection` directly and utilizes
9
+ # `verified_request?` method to match the way Rails performs token
10
+ # verification in Rails controllers.
11
+ #
12
+ # If you like to learn more about how Rails generate and verify
13
+ # authenticity token, you can find the source code at
14
+ # https://github.com/rails/rails/blob/v5.2.2/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L217-L240.
15
+ class TokenVerifier
16
+ include ActiveSupport::Configurable
17
+ include ActionController::RequestForgeryProtection
18
+
19
+ # `ActionController::RequestForgeryProtection` contains a few
20
+ # configurable options. As we want to make sure that our configuration is
21
+ # the same as what being set in `ActionController::Base`, we should make
22
+ # all out configuration methods to delegate to `ActionController::Base`.
23
+ config.each_key do |configuration_name|
24
+ undef_method configuration_name
25
+ define_method configuration_name do
26
+ ActionController::Base.config[configuration_name]
27
+ end
28
+ end
29
+
30
+ def call(env)
31
+ @request = ActionDispatch::Request.new(env)
32
+
33
+ unless verified_request?
34
+ raise ActionController::InvalidAuthenticityToken
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ attr_reader :request
41
+ delegate :params, :session, to: :request
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,5 @@
1
+ module OmniAuth
2
+ module RailsCsrfProtection
3
+ VERSION = "0.1.0".freeze
4
+ end
5
+ end
@@ -0,0 +1,37 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "omniauth/rails_csrf_protection/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "omniauth-rails_csrf_protection"
7
+ spec.version = OmniAuth::RailsCsrfProtection::VERSION
8
+ spec.authors = ["Cookpad Inc."]
9
+ spec.email = ["kaihatsu@cookpad.com"]
10
+
11
+ spec.summary = <<~SUMMARY
12
+ Provides CSRF protection on OmniAuth request endpoint on Rails application.
13
+ SUMMARY
14
+
15
+ spec.description = <<~DESCRIPTION
16
+ This gem provides a mitigation against CVE-2015-9284 (Cross-Site Request
17
+ Forgery on the request phrase when using OmniAuth gem with a Ruby on Rails
18
+ application) by implementing a CSRF token verifier that directly utilize
19
+ `ActionController::RequestForgeryProtection` code from Rails.
20
+ DESCRIPTION
21
+
22
+ spec.homepage = "https://github.com/cookpad/omniauth-rails_csrf_protection"
23
+ spec.license = "MIT"
24
+
25
+ spec.files = `git ls-files`.split("\n")
26
+ spec.test_files = `git ls-files -- test/*`.split("\n")
27
+
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency "actionpack", ">= 5.1.0"
31
+ spec.add_dependency "omniauth", ">= 1.3.1"
32
+
33
+ spec.add_development_dependency "bundler"
34
+ spec.add_development_dependency "minitest"
35
+ spec.add_development_dependency "rails"
36
+ spec.add_development_dependency "rake"
37
+ end
@@ -0,0 +1,40 @@
1
+ require "test_helper"
2
+
3
+ class ApplicationTest < Minitest::Test
4
+ include Rack::Test::Methods
5
+
6
+ def test_request_phrase_not_accessible_via_get
7
+ get "/auth/developer"
8
+
9
+ assert last_response.not_found?
10
+ end
11
+
12
+ def test_request_phrase_without_token_via_post
13
+ post "/auth/developer"
14
+
15
+ assert last_response.unprocessable?
16
+ end
17
+
18
+ def test_request_phrase_with_bad_token_via_post
19
+ post "/auth/developer", authenticity_token: "BAD_TOKEN"
20
+
21
+ assert last_response.unprocessable?
22
+ end
23
+
24
+ def test_request_phrase_with_correct_token_via_post
25
+ post "/auth/developer", authenticity_token: authenticity_token
26
+
27
+ assert last_response.ok?
28
+ end
29
+
30
+ private
31
+
32
+ def app
33
+ Rails.application
34
+ end
35
+
36
+ def authenticity_token
37
+ get "/token"
38
+ last_response.body
39
+ end
40
+ end
@@ -0,0 +1,69 @@
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
2
+
3
+ # Simple Rails application template, based on Rails issue template
4
+ # https://github.com/rails/rails/blob/master/guides/bug_report_templates/action_controller_gem.rb
5
+
6
+ # Helper method to silence warnings from bundler/inline
7
+ def silence_warnings
8
+ old_verbose, $VERBOSE = $VERBOSE, nil
9
+ yield
10
+ ensure
11
+ $VERBOSE = old_verbose
12
+ end
13
+
14
+ silence_warnings do
15
+ require "bundler/inline"
16
+
17
+ # Define dependencies required by this test app
18
+ gemfile do
19
+ source "https://rubygems.org"
20
+
21
+ gem "rails"
22
+ gem "omniauth"
23
+ gem "omniauth-rails_csrf_protection", path: File.expand_path("..", __dir__)
24
+ end
25
+ end
26
+
27
+ puts "Running test against Rails #{Rails.version}"
28
+
29
+ require "rack/test"
30
+ require "action_controller/railtie"
31
+ require "minitest/autorun"
32
+
33
+ # Build a test application which uses OmniAuth
34
+ class TestApp < Rails::Application
35
+ config.root = __dir__
36
+ config.session_store :cookie_store, key: "cookie_store_key"
37
+ secrets.secret_key_base = "secret_key_base"
38
+ config.eager_load = false
39
+ config.hosts = []
40
+
41
+ # This allow us to send all logs to STDOUT if we run test wth `VERBOSE=1`
42
+ config.logger = if ENV["VERBOSE"]
43
+ Logger.new($stdout)
44
+ else
45
+ Logger.new("/dev/null")
46
+ end
47
+ Rails.logger = config.logger
48
+ OmniAuth.config.logger = Rails.logger
49
+
50
+ # Setup a simple OmniAuth configuration with only developer provider
51
+ config.middleware.use OmniAuth::Builder do
52
+ provider :developer
53
+ end
54
+
55
+ # We need to call initialize! to run all railties
56
+ initialize!
57
+
58
+ # Define our custom routes. This needs to be called after initialize!
59
+ routes.draw do
60
+ get "token" => "application#token"
61
+ end
62
+ end
63
+
64
+ # A small test controller which we use to retrive the valid authenticity token
65
+ class ApplicationController < ActionController::Base
66
+ def token
67
+ render plain: form_authenticity_token
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omniauth-rails_csrf_protection
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Cookpad Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionpack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: omniauth
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: |
98
+ This gem provides a mitigation against CVE-2015-9284 (Cross-Site Request
99
+ Forgery on the request phrase when using OmniAuth gem with a Ruby on Rails
100
+ application) by implementing a CSRF token verifier that directly utilize
101
+ `ActionController::RequestForgeryProtection` code from Rails.
102
+ email:
103
+ - kaihatsu@cookpad.com
104
+ executables: []
105
+ extensions: []
106
+ extra_rdoc_files: []
107
+ files:
108
+ - ".circleci/config.yml"
109
+ - ".gitignore"
110
+ - ".rubocop.yml"
111
+ - CODE_OF_CONDUCT.md
112
+ - Gemfile
113
+ - LICENSE.txt
114
+ - README.md
115
+ - Rakefile
116
+ - lib/omniauth/rails_csrf_protection.rb
117
+ - lib/omniauth/rails_csrf_protection/railtie.rb
118
+ - lib/omniauth/rails_csrf_protection/token_verifier.rb
119
+ - lib/omniauth/rails_csrf_protection/version.rb
120
+ - omniauth-rails_csrf_protection.gemspec
121
+ - test/application_test.rb
122
+ - test/test_helper.rb
123
+ homepage: https://github.com/cookpad/omniauth-rails_csrf_protection
124
+ licenses:
125
+ - MIT
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubygems_version: 3.0.3
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: Provides CSRF protection on OmniAuth request endpoint on Rails application.
146
+ test_files:
147
+ - test/application_test.rb
148
+ - test/test_helper.rb