omniauth-auth0 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock ADDED
@@ -0,0 +1,180 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ omniauth-auth0 (3.1.0)
5
+ omniauth (~> 2)
6
+ omniauth-oauth2 (~> 1)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.8.1)
12
+ public_suffix (>= 2.0.2, < 6.0)
13
+ ast (2.4.2)
14
+ coderay (1.1.3)
15
+ crack (0.4.5)
16
+ rexml
17
+ daemons (1.4.1)
18
+ diff-lcs (1.5.0)
19
+ docile (1.4.0)
20
+ dotenv (2.8.1)
21
+ eventmachine (1.2.7)
22
+ faraday (2.7.1)
23
+ faraday-net_http (>= 2.0, < 3.1)
24
+ ruby2_keywords (>= 0.0.4)
25
+ faraday-net_http (3.0.2)
26
+ ffi (1.15.5)
27
+ formatador (1.1.0)
28
+ gem-release (2.2.2)
29
+ guard (2.18.0)
30
+ formatador (>= 0.2.4)
31
+ listen (>= 2.7, < 4.0)
32
+ lumberjack (>= 1.0.12, < 2.0)
33
+ nenv (~> 0.1)
34
+ notiffany (~> 0.0)
35
+ pry (>= 0.13.0)
36
+ shellany (~> 0.0)
37
+ thor (>= 0.18.1)
38
+ guard-compat (1.2.1)
39
+ guard-rspec (4.7.3)
40
+ guard (~> 2.1)
41
+ guard-compat (~> 1.1)
42
+ rspec (>= 2.99.0, < 4.0)
43
+ hashdiff (1.0.1)
44
+ hashie (5.0.0)
45
+ json (2.6.3)
46
+ jwt (2.5.0)
47
+ listen (3.7.1)
48
+ rb-fsevent (~> 0.10, >= 0.10.3)
49
+ rb-inotify (~> 0.9, >= 0.9.10)
50
+ lumberjack (1.2.8)
51
+ method_source (1.0.0)
52
+ multi_json (1.15.0)
53
+ multi_xml (0.6.0)
54
+ mustermann (2.0.2)
55
+ ruby2_keywords (~> 0.0.1)
56
+ nenv (0.3.0)
57
+ notiffany (0.1.3)
58
+ nenv (~> 0.1)
59
+ shellany (~> 0.0)
60
+ oauth2 (2.0.9)
61
+ faraday (>= 0.17.3, < 3.0)
62
+ jwt (>= 1.0, < 3.0)
63
+ multi_xml (~> 0.5)
64
+ rack (>= 1.2, < 4)
65
+ snaky_hash (~> 2.0)
66
+ version_gem (~> 1.1)
67
+ omniauth (2.1.0)
68
+ hashie (>= 3.4.6)
69
+ rack (>= 2.2.3)
70
+ rack-protection
71
+ omniauth-oauth2 (1.8.0)
72
+ oauth2 (>= 1.4, < 3)
73
+ omniauth (~> 2.0)
74
+ parallel (1.22.1)
75
+ parser (3.1.3.0)
76
+ ast (~> 2.4.1)
77
+ pry (0.14.1)
78
+ coderay (~> 1.1)
79
+ method_source (~> 1.0)
80
+ public_suffix (5.0.0)
81
+ rack (2.2.4)
82
+ rack-protection (2.2.3)
83
+ rack
84
+ rack-test (2.0.2)
85
+ rack (>= 1.3)
86
+ rainbow (3.1.1)
87
+ rake (13.0.6)
88
+ rb-fsevent (0.11.2)
89
+ rb-inotify (0.10.1)
90
+ ffi (~> 1.0)
91
+ regexp_parser (2.6.1)
92
+ rexml (3.2.5)
93
+ rspec (3.12.0)
94
+ rspec-core (~> 3.12.0)
95
+ rspec-expectations (~> 3.12.0)
96
+ rspec-mocks (~> 3.12.0)
97
+ rspec-core (3.12.0)
98
+ rspec-support (~> 3.12.0)
99
+ rspec-expectations (3.12.0)
100
+ diff-lcs (>= 1.2.0, < 2.0)
101
+ rspec-support (~> 3.12.0)
102
+ rspec-mocks (3.12.0)
103
+ diff-lcs (>= 1.2.0, < 2.0)
104
+ rspec-support (~> 3.12.0)
105
+ rspec-support (3.12.0)
106
+ rubocop (1.39.0)
107
+ json (~> 2.3)
108
+ parallel (~> 1.10)
109
+ parser (>= 3.1.2.1)
110
+ rainbow (>= 2.2.2, < 4.0)
111
+ regexp_parser (>= 1.8, < 3.0)
112
+ rexml (>= 3.2.5, < 4.0)
113
+ rubocop-ast (>= 1.23.0, < 2.0)
114
+ ruby-progressbar (~> 1.7)
115
+ unicode-display_width (>= 1.4.0, < 3.0)
116
+ rubocop-ast (1.24.0)
117
+ parser (>= 3.1.1.0)
118
+ ruby-progressbar (1.11.0)
119
+ ruby2_keywords (0.0.5)
120
+ shellany (0.0.1)
121
+ shotgun (0.9.2)
122
+ rack (>= 1.0)
123
+ simplecov (0.21.2)
124
+ docile (~> 1.1)
125
+ simplecov-html (~> 0.11)
126
+ simplecov_json_formatter (~> 0.1)
127
+ simplecov-cobertura (2.1.0)
128
+ rexml
129
+ simplecov (~> 0.19)
130
+ simplecov-html (0.12.3)
131
+ simplecov_json_formatter (0.1.4)
132
+ sinatra (2.2.3)
133
+ mustermann (~> 2.0)
134
+ rack (~> 2.2)
135
+ rack-protection (= 2.2.3)
136
+ tilt (~> 2.0)
137
+ snaky_hash (2.0.1)
138
+ hashie
139
+ version_gem (~> 1.1, >= 1.1.1)
140
+ thin (1.8.1)
141
+ daemons (~> 1.0, >= 1.0.9)
142
+ eventmachine (~> 1.0, >= 1.0.4)
143
+ rack (>= 1, < 3)
144
+ thor (1.2.1)
145
+ tilt (2.0.11)
146
+ unicode-display_width (2.3.0)
147
+ version_gem (1.1.1)
148
+ webmock (3.18.1)
149
+ addressable (>= 2.8.0)
150
+ crack (>= 0.3.2)
151
+ hashdiff (>= 0.4.0, < 2.0.0)
152
+
153
+ PLATFORMS
154
+ arm64-darwin-21
155
+ x86_64-darwin-20
156
+ x86_64-darwin-21
157
+ x86_64-linux
158
+
159
+ DEPENDENCIES
160
+ bundler
161
+ dotenv (~> 2)
162
+ gem-release (~> 2)
163
+ guard-rspec (~> 4)
164
+ jwt (~> 2)
165
+ listen (~> 3)
166
+ multi_json (~> 1)
167
+ omniauth-auth0!
168
+ pry (~> 0)
169
+ rack-test (~> 2)
170
+ rake (~> 13)
171
+ rspec (~> 3)
172
+ rubocop (~> 1)
173
+ shotgun (~> 0)
174
+ simplecov-cobertura (~> 2)
175
+ sinatra (~> 2)
176
+ thin (~> 1)
177
+ webmock (~> 3)
178
+
179
+ BUNDLED WITH
180
+ 2.3.7
data/README.md CHANGED
@@ -1,25 +1,14 @@
1
- # OmniAuth Auth0
1
+ ![Omniauth-auth0](https://cdn.auth0.com/website/sdks/banners/omniauth-auth0-banner.png)
2
2
 
3
- An [OmniAuth](https://github.com/intridea/omniauth) strategy for authenticating with [Auth0](https://auth0.com). This strategy is based on the [OmniAuth OAuth2](https://github.com/omniauth/omniauth-oauth2) strategy.
4
-
5
- > :warning: **Important security note for v2:** This solution uses a 3rd party library that had a [security issue(s)](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-9284) in v2. Please review the details of the vulnerability, including [Auth0](https://github.com/auth0/omniauth-auth0/issues/82 ) and other recommended [mitigations](https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284), before implementing the solution in v2. **[Upgrading to v3](https://github.com/auth0/omniauth-auth0/pull/128) of this library resolves the issue.**
6
3
 
7
4
  [![CircleCI](https://img.shields.io/circleci/project/github/auth0/omniauth-auth0/master.svg)](https://circleci.com/gh/auth0/omniauth-auth0)
8
5
  [![codecov](https://codecov.io/gh/auth0/omniauth-auth0/branch/master/graph/badge.svg)](https://codecov.io/gh/auth0/omniauth-auth0)
9
6
  [![Gem Version](https://badge.fury.io/rb/omniauth-auth0.svg)](https://badge.fury.io/rb/omniauth-auth0)
10
7
  [![MIT licensed](https://img.shields.io/dub/l/vibe-d.svg?style=flat)](https://github.com/auth0/omniauth-auth0/blob/master/LICENSE)
11
- [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fauth0%2Fomniauth-auth0.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fauth0%2Fomniauth-auth0?ref=badge_shield)
12
-
13
- ## Table of Contents
14
8
 
15
- - [Documentation](#documentation)
16
- - [Installation](#installation)
17
- - [Getting Started](#getting-started)
18
- - [Contribution](#contribution)
19
- - [Support + Feedback](#support--feedback)
20
- - [Vulnerability Reporting](#vulnerability-reporting)
21
- - [What is Auth0](#what-is-auth0)
22
- - [License](#license)
9
+ <div>
10
+ 📚 <a href="#documentation">Documentation</a> - 🚀 <a href="#getting-started">Getting started</a> - 💻 <a href="https://www.rubydoc.info/gems/omniauth-auth0">API reference</a> - 💬 <a href="#feedback">Feedback</a>
11
+ </div>
23
12
 
24
13
  ## Documentation
25
14
 
@@ -27,7 +16,9 @@ An [OmniAuth](https://github.com/intridea/omniauth) strategy for authenticating
27
16
  - [Sample projects](https://github.com/auth0-samples/auth0-rubyonrails-sample)
28
17
  - [API Reference](https://www.rubydoc.info/gems/omniauth-auth0)
29
18
 
30
- ## Installation
19
+ ## Getting started
20
+
21
+ ### Installation
31
22
 
32
23
  Add the following line to your `Gemfile`:
33
24
 
@@ -49,221 +40,129 @@ $ bundle install
49
40
 
50
41
  See our [contributing guide](CONTRIBUTING.md) for information on local installation for development.
51
42
 
52
- ## Getting Started
53
-
54
- To start processing authentication requests, the following steps must be performed:
55
-
56
- 1. Initialize the strategy
57
- 2. Configure the callback controller
58
- 3. Add the required routes
59
- 4. Trigger an authentication request
60
-
61
- All of these tasks and more are covered in our [Ruby on Rails Quickstart](https://auth0.com/docs/quickstart/webapp/rails).
62
-
63
- ### Additional authentication parameters
64
-
65
- To send additional parameters during login, you can specify them when you register the provider:
66
-
67
- ```ruby
68
- provider
69
- :auth0,
70
- ENV['AUTH0_CLIENT_ID'],
71
- ENV['AUTH0_CLIENT_SECRET'],
72
- ENV['AUTH0_DOMAIN'],
73
- {
74
- authorize_params: {
75
- scope: 'openid read:users write:order',
76
- audience: 'https://mydomain/api',
77
- max_age: 3600 # time in seconds authentication is valid
78
- }
79
- }
80
- ```
43
+ ## Configure the SDK
81
44
 
82
- ... which will tell the strategy to send those parameters on every authentication request.
45
+ Adding the SDK to your Rails app requires a few steps:
83
46
 
84
- ### Authentication hash
47
+ - [Create the configuration file](#create-the-configuration-file)
48
+ - [Create the initializer](#create-the-initializer)
49
+ - [Create the callback controller](#create-the-callback-controller)
50
+ - [Add routes](#add-routes)
85
51
 
86
- The Auth0 strategy will provide the standard OmniAuth hash attributes:
52
+ ### Create the configuration file
87
53
 
88
- - `:provider` - the name of the strategy, in this case `auth0`
89
- - `:uid` - the user identifier
90
- - `:info` - the result of the call to `/userinfo` using OmniAuth standard attributes
91
- - `:credentials` - tokens requested and data
92
- - `:extra` - Additional info obtained from calling `/userinfo` in the `:raw_info` property
54
+ Create the file `./config/auth0.yml` within your application directory with the following content:
93
55
 
94
- ```ruby
95
- {
96
- :provider => 'auth0',
97
- :uid => 'auth0|USER_ID',
98
- :info => {
99
- :name => 'John Foo',
100
- :email => 'johnfoo@example.org',
101
- :nickname => 'john',
102
- :image => 'https://example.org/john.jpg'
103
- },
104
- :credentials => {
105
- :token => 'ACCESS_TOKEN',
106
- :expires_at => 1485373937,
107
- :expires => true,
108
- :refresh_token => 'REFRESH_TOKEN',
109
- :id_token => 'JWT_ID_TOKEN',
110
- :token_type => 'bearer',
111
- },
112
- :extra => {
113
- :raw_info => {
114
- :email => 'johnfoo@example.org',
115
- :email_verified => 'true',
116
- :name => 'John Foo',
117
- :picture => 'https://example.org/john.jpg',
118
- :user_id => 'auth0|USER_ID',
119
- :nickname => 'john',
120
- :created_at => '2014-07-15T17:19:50.387Z'
121
- }
122
- }
123
- }
56
+ ```yml
57
+ development:
58
+ auth0_domain: <YOUR_DOMAIN>
59
+ auth0_client_id: <YOUR_CLIENT_ID>
60
+ auth0_client_secret: <YOUR AUTH0 CLIENT SECRET>
124
61
  ```
125
62
 
126
- ### Query Parameter Options
127
-
128
- In some scenarios, you may need to pass specific query parameters to `/authorize`. The following parameters are available to enable this:
129
-
130
- - `connection`
131
- - `connection_scope`
132
- - `prompt`
133
- - `screen_hint` (only relevant to New Universal Login Experience)
134
- - `organization`
135
- - `invitation`
136
-
137
- Simply pass these query parameters to your OmniAuth redirect endpoint to enable their behavior.
138
-
139
- ## Examples
140
-
141
- ### Auth0 Organizations
142
-
143
- [Organizations](https://auth0.com/docs/organizations) is a set of features that provide better support for developers who build and maintain SaaS and Business-to-Business (B2B) applications.
144
-
145
- Using Organizations, you can:
63
+ ### Create the initializer
146
64
 
147
- - Represent teams, business customers, partner companies, or any logical grouping of users that should have different ways of accessing your applications, as organizations.
148
- - Manage their membership in a variety of ways, including user invitation.
149
- - Configure branded, federated login flows for each organization.
150
- - Implement role-based access control, such that users can have different roles when authenticating in the context of different organizations.
151
- - Build administration capabilities into your products, using Organizations APIs, so that those businesses can manage their own organizations.
152
-
153
- Note that Organizations is currently only available to customers on our Enterprise and Startup subscription plans.
154
-
155
- #### Logging in with an Organization
156
-
157
- Logging in with an Organization is as easy as passing the parameters to the authorize endpoint. You can do this with
65
+ Create a new Ruby file in `./config/initializers/auth0.rb` to configure the OmniAuth middleware:
158
66
 
159
67
  ```ruby
160
- <%=
161
- button_to 'Login', 'auth/auth0',
162
- method: :post,
163
- params: {
164
- # Found in your Auth0 dashboard, under Organization settings:
165
- organization: '{AUTH0_ORGANIZATION}'
166
- }
167
- %>
168
- ```
169
-
170
- Alternatively you can configure the organization when you register the provider:
171
-
172
- ```ruby
173
- provider
174
- :auth0,
175
- ENV['AUTH0_CLIENT_ID'],
176
- ENV['AUTH0_CLIENT_SECRET'],
177
- ENV['AUTH0_DOMAIN']
178
- {
68
+ AUTH0_CONFIG = Rails.application.config_for(:auth0)
69
+
70
+ Rails.application.config.middleware.use OmniAuth::Builder do
71
+ provider(
72
+ :auth0,
73
+ AUTH0_CONFIG['auth0_client_id'],
74
+ AUTH0_CONFIG['auth0_client_secret'],
75
+ AUTH0_CONFIG['auth0_domain'],
76
+ callback_path: '/auth/auth0/callback',
179
77
  authorize_params: {
180
- scope: 'openid read:users',
181
- audience: 'https://{AUTH0_DOMAIN}/api',
182
- organization: '{AUTH0_ORGANIZATION}'
78
+ scope: 'openid profile'
183
79
  }
184
- }
80
+ )
81
+ end
185
82
  ```
186
83
 
187
- When passing `openid` to the scope and `organization` to the authorize params, you will receive an ID token on callback with the `org_id` claim. This claim is validated for you by the SDK.
188
-
189
- #### Validating Organizations when using Organization Login Prompt
190
-
191
- When Organization login prompt is enabled on your application, but you haven't specified an Organization for the application's authorization endpoint, the `org_id` claim will be present on the ID token, and should be validated to ensure that the value received is expected or known.
192
-
193
- Normally, validating the issuer would be enough to ensure that the token was issued by Auth0, and this check is performed by the SDK. However, in the case of organizations, additional checks should be made so that the organization within an Auth0 tenant is expected.
84
+ ### Create the callback controller
194
85
 
195
- In particular, the `org_id` claim should be checked to ensure it is a value that is already known to the application. This could be validated against a known list of organization IDs, or perhaps checked in conjunction with the current request URL. e.g. the sub-domain may hint at what organization should be used to validate the ID Token.
86
+ Create a new controller `./app/controllers/auth0_controller.rb` to handle the callback from Auth0.
196
87
 
197
- Here is an example using it in your `callback` method
88
+ > You can also run `rails generate controller auth0 callback failure logout --skip-assets --skip-helper --skip-routes --skip-template-engine` to scaffold this controller for you.
198
89
 
199
90
  ```ruby
91
+ # ./app/controllers/auth0_controller.rb
92
+ class Auth0Controller < ApplicationController
200
93
  def callback
201
- claims = request.env['omniauth.auth']['extra']['raw_info']
202
-
203
- if claims["org"] && claims["org"] !== expected_org
204
- redirect_to '/unauthorized', status: 401
205
- else
206
- session[:userinfo] = claims
207
- redirect_to '/dashboard'
208
- end
94
+ # OmniAuth stores the information returned from Auth0 and the IdP in request.env['omniauth.auth'].
95
+ # In this code, you will pull the raw_info supplied from the id_token and assign it to the session.
96
+ # Refer to https://github.com/auth0/omniauth-auth0/blob/master/EXAMPLES.md#example-of-the-resulting-authentication-hash for complete information on 'omniauth.auth' contents.
97
+ auth_info = request.env['omniauth.auth']
98
+ session[:userinfo] = auth_info['extra']['raw_info']
99
+
100
+ # Redirect to the URL you want after successful auth
101
+ redirect_to '/dashboard'
209
102
  end
210
- ```
211
-
212
- For more information, please read [Work with Tokens and Organizations](https://auth0.com/docs/organizations/using-tokens) on Auth0 Docs.
213
103
 
214
- #### Accepting user invitations
104
+ def failure
105
+ # Handles failed authentication -- Show a failure page (you can also handle with a redirect)
106
+ @error_msg = request.params['message']
107
+ end
215
108
 
216
- Auth0 Organizations allow users to be invited using emailed links, which will direct a user back to your application. The URL the user will arrive at is based on your configured `Application Login URI`, which you can change from your Application's settings inside the Auth0 dashboard.
109
+ def logout
110
+ # you will finish this in a later step
111
+ end
112
+ end
113
+ ```
217
114
 
218
- When the user arrives at your application using an invite link, you can expect three query parameters to be provided: `invitation`, `organization`, and `organization_name`. These will always be delivered using a GET request.
115
+ ### Add routes
219
116
 
220
- You can then supply those parametrs to a `button_to` or `link_to` helper
117
+ Finally, add the following routes to your `./config/routes.rb` file:
221
118
 
222
119
  ```ruby
223
- <%=
224
- button_to 'Login', 'auth/auth0',
225
- method: :post,
226
- params: {
227
- organization: '{YOUR_ORGANIZATION_ID}',
228
- invitation: '{INVITE_CODE}'
229
- }
230
- %>
120
+ Rails.application.routes.draw do
121
+ # ..
122
+ get '/auth/auth0/callback' => 'auth0#callback'
123
+ get '/auth/failure' => 'auth0#failure'
124
+ get '/auth/logout' => 'auth0#logout'
125
+ end
231
126
  ```
232
127
 
233
- ## Contribution
128
+ ## Logging in
234
129
 
235
- We appreciate feedback and contribution to this repo! Before you get started, please see the following:
236
-
237
- - [Auth0's contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md)
238
- - [Auth0's Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md)
239
- - [This repo's contribution guide](CONTRIBUTING.md)
240
-
241
- ## Support + Feedback
130
+ To redirect your users to Auth0 for authentication, redirect your users to the `/auth/auth0` endpoint of your app. One way to do this is to use a link or button on a page:
242
131
 
243
- - Use [Community](https://community.auth0.com/) for usage, questions, specific cases.
244
- - Use [Issues](https://github.com/auth0/omniauth-auth0/issues) here for code-level support and bug reports.
245
- - Paid customers can use [Support](https://support.auth0.com/) to submit a trouble ticket for production-affecting issues.
132
+ ```html
133
+ <%= button_to 'Login', '/auth/auth0', method: :post %>
134
+ ```
246
135
 
247
- ## Vulnerability Reporting
136
+ ## Feedback
248
137
 
249
- Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
138
+ ### Contributing
250
139
 
251
- ## What is Auth0?
140
+ We appreciate feedback and contribution to this repo! Before you get started, please see the following:
252
141
 
253
- Auth0 helps you to easily:
142
+ - [Auth0's general contribution guidelines](https://github.com/auth0/open-source-template/blob/master/GENERAL-CONTRIBUTING.md)
143
+ - [Auth0's code of conduct guidelines](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md)
144
+ - [This repo's contribution guide](https://github.com/auth0/omniauth-auth0/blob/master/CONTRIBUTING.md)
254
145
 
255
- - implement authentication with multiple identity providers, including social (e.g., Google, Facebook, Microsoft, LinkedIn, GitHub, Twitter, etc), or enterprise (e.g., Windows Azure AD, Google Apps, Active Directory, ADFS, SAML, etc.)
256
- - log in users with username/password databases, passwordless, or multi-factor authentication
257
- - link multiple user accounts together
258
- - generate signed JSON Web Tokens to authorize your API calls and flow the user identity securely
259
- - access demographics and analytics detailing how, when, and where users are logging in
260
- - enrich user profiles from other data sources using customizable JavaScript rules
146
+ ### Raise an issue
261
147
 
262
- [Why Auth0?](https://auth0.com/why-auth0)
148
+ To provide feedback or report a bug, please [raise an issue on our issue tracker](https://github.com/auth0/omniauth-auth0/issues).
263
149
 
264
- ## License
150
+ ### Vulnerability Reporting
265
151
 
266
- The OmniAuth Auth0 strategy is licensed under MIT - [LICENSE](LICENSE)
152
+ Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
267
153
 
154
+ ---
268
155
 
269
- [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fauth0%2Fomniauth-auth0.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fauth0%2Fomniauth-auth0?ref=badge_large)
156
+ <p align="center">
157
+ <picture>
158
+ <source media="(prefers-color-scheme: dark)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_dark_mode.png" width="150">
159
+ <source media="(prefers-color-scheme: light)" srcset="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png" width="150">
160
+ <img alt="Auth0 Logo" src="https://cdn.auth0.com/website/sdks/logos/auth0_light_mode.png" width="150">
161
+ </picture>
162
+ </p>
163
+ <p align="center">
164
+ Auth0 is an easy to implement, adaptable authentication and authorization platform. To learn more checkout <a href="https://auth0.com/why-auth0">Why Auth0?</a>
165
+ </p>
166
+ <p align="center">
167
+ This project is licensed under the MIT license. See the <a href="https://github.com/auth0/omniauth-auth0/blob/master/LICENSE"> LICENSE</a> file for more info.
168
+ </p>
@@ -84,7 +84,7 @@ module OmniAuth
84
84
  # Define the parameters used for the /authorize endpoint
85
85
  def authorize_params
86
86
  params = super
87
- %w[connection connection_scope prompt screen_hint login_hint organization invitation].each do |key|
87
+ %w[connection connection_scope prompt screen_hint login_hint organization invitation ui_locales].each do |key|
88
88
  params[key] = request.params[key] if request.params.key?(key)
89
89
  end
90
90
 
@@ -94,7 +94,7 @@ module OmniAuth
94
94
  params[:leeway] = 60 unless params[:leeway]
95
95
 
96
96
  # Store authorize params in the session for token verification
97
- session['authorize_params'] = params
97
+ session['authorize_params'] = params.to_hash
98
98
 
99
99
  params
100
100
  end
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Auth0
3
- VERSION = '3.0.0'.freeze
3
+ VERSION = '3.1.0'.freeze
4
4
  end
5
5
  end
@@ -21,10 +21,10 @@ omniauth-auth0 is the OmniAuth strategy for Auth0.
21
21
  s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
22
22
  s.require_paths = ['lib']
23
23
 
24
- s.add_runtime_dependency 'omniauth', '~> 2.0'
25
- s.add_runtime_dependency 'omniauth-oauth2', '~> 1.7'
24
+ s.add_runtime_dependency 'omniauth', '~> 2'
25
+ s.add_runtime_dependency 'omniauth-oauth2', '~> 1'
26
26
 
27
27
  s.add_development_dependency 'bundler'
28
-
28
+
29
29
  s.license = 'MIT'
30
30
  end
data/opslevel.yml ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ version: 1
3
+ repository:
4
+ owner: dx_sdks
5
+ tier:
6
+ tags:
@@ -357,7 +357,7 @@ describe OmniAuth::Auth0::JWTValidator do
357
357
  message: "Nonce (nonce) claim value mismatch in the ID token; expected (noncey), found (mismatch)"
358
358
  }))
359
359
  end
360
-
360
+
361
361
  it 'should fail when “aud” is an array of strings and azp claim is not present' do
362
362
  aud = [
363
363
  client_id,
@@ -476,7 +476,7 @@ describe OmniAuth::Auth0::JWTValidator do
476
476
  expect(id_token['auth_time']).to eq(auth_time)
477
477
  end
478
478
 
479
- it 'should fail when authorize params has organization but org_id is missing in the token', focus: true do
479
+ it 'should fail when authorize params has organization but org_id is missing in the token' do
480
480
  payload = {
481
481
  iss: "https://#{domain}/",
482
482
  sub: 'sub',
@@ -493,7 +493,7 @@ describe OmniAuth::Auth0::JWTValidator do
493
493
  }))
494
494
  end
495
495
 
496
- it 'should fail when authorize params has organization but token org_id does not match', focus: true do
496
+ it 'should fail when authorize params has organization but token org_id does not match' do
497
497
  payload = {
498
498
  iss: "https://#{domain}/",
499
499
  sub: 'sub',
@@ -544,7 +544,7 @@ describe OmniAuth::Auth0::JWTValidator do
544
544
  expect do
545
545
  verified_token = make_jwt_validator(opt_domain: domain).verify(token)
546
546
  end.to raise_error(an_instance_of(JWT::VerificationError).and having_attributes({
547
- message: "Signature verification raised"
547
+ message: "Signature verification failed"
548
548
  }))
549
549
  end
550
550
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'jwt'
5
+ require 'multi_json'
5
6
 
6
7
  OmniAuth.config.allowed_request_methods = [:get, :post]
7
8
 
@@ -198,6 +199,19 @@ describe OmniAuth::Strategies::Auth0 do
198
199
  expect(redirect_url).not_to have_query('invitation')
199
200
  end
200
201
 
202
+ def session
203
+ session_cookie = last_response.cookies['rack.session'].first
204
+ session_data, _, _ = session_cookie.rpartition('--')
205
+ decoded_session_data = Base64.decode64(session_data)
206
+ Marshal.load(decoded_session_data)
207
+ end
208
+
209
+ it "stores session['authorize_params'] as a plain Ruby Hash" do
210
+ get '/auth/auth0'
211
+
212
+ expect(session['authorize_params'].class).to eq(::Hash)
213
+ end
214
+
201
215
  describe 'callback' do
202
216
  let(:access_token) { 'access token' }
203
217
  let(:expires_in) { 2000 }