omniauth-azure-activedirectory-v2 0.1.1 → 2.1.0

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
2
  SHA256:
3
- metadata.gz: 80a76c16a7b809e84e27846806c3f8aa685ef765f7abc836006d17b602223a28
4
- data.tar.gz: 1c6d60e594ee6002bfdf958c5d6db5a14f4f3dec4f76d71cd0ed65df1cbbfb10
3
+ metadata.gz: 82d3c5122483452eb3e9b37dba4ae4faab9ccad50e343e8f91834ee87771bcb2
4
+ data.tar.gz: 75cb855f9c40ea1d0d3186dc3282ad89e6054c1da576e8b9d5e5983a5b617a85
5
5
  SHA512:
6
- metadata.gz: 125ae35a66c2a79a19cca02e628d0e825d4835ff2e82d74ba2f9da604eb80edd58bb8119ff4bab51a76be1240b8646155c2c89e33d0f3f34486dcbfce9cf7347
7
- data.tar.gz: cdf8f67104262494e48d50ed872a30bc6963c0ebbb8ebbd4c251d9b0ea50133bd897bf3a417ab4c0eaff5e3ad63ac4b7812de07599ff6c1bf425871f7a2b4686
6
+ metadata.gz: d26b6339a494b85458791b95b52302456f34930d1ea9dd445fdb24b3eda589602ffb5088bfa2ec8c37a71238317c82759dd07b30f0ae4975c2b295bc3ca6e5eb
7
+ data.tar.gz: 6d1ca0c3c8e6946c2a40cbf3939ab6da98e6f6004a600f09b5096d8a2dc0e65643d0b2028d80c5ce91ca5d7f29998c1cec34d4989b6d01d9c070008dfea1e1d0
data/CHANGELOG.md ADDED
@@ -0,0 +1,51 @@
1
+ # Change Log
2
+
3
+ ## v2.1.0 (2023-09-16)
4
+
5
+ [Implements](https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/pull/19) support for custom policies when using Microsoft Azure AD - thanks @stevenchanin!
6
+
7
+ ## v2.0.2 (2023-03-31)
8
+
9
+ [Fixes](https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/pull/16) inability to override prompt in authorisation parameters - thanks @lamroger!
10
+
11
+ ## v2.0.1 (2023-01-11)
12
+
13
+ Renames:
14
+
15
+ * RIPGlobal -> RIPAGlobal
16
+ * Omniauth -> OmniAuth
17
+
18
+ _No functional change._
19
+
20
+ ## v2.0.0 (2022-09-14)
21
+
22
+ Makes compatible with OmniAuth 2 and requires it.
23
+
24
+ Note: https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/pull/6 for reasoning - Thanks @jessieay
25
+
26
+ _Major version bump as no longer supports OmniAuth 1._
27
+
28
+ ## v1.0.0 (2020-09-25)
29
+
30
+ Removes use of the https://graph.microsoft.com/v1.0/me API.
31
+
32
+ * One of the key differences for the V2 API vs V1 is the differences
33
+ between who can sign with the addition of Personal Accounts - see:
34
+ https://nicolgit.github.io/AzureAD-Endopoint-V1-vs-V2-comparison/
35
+
36
+ - In testing we found that these accounts may not have access to
37
+ this endpoint
38
+ - All the data provided in `info` exists in the JWT anyway, so this
39
+ cuts down on API calls
40
+
41
+ * Conforms to the OmniAuth Auth Hash Schema (1.0 and later) - see:
42
+ https://github.com/omniauth/omniauth/wiki/Auth-Hash-Schema
43
+
44
+ - Expose `raw_info`
45
+ - Remove `id` from `info`
46
+ - *NB: This could be a breaking change for some, but most will
47
+ already be using the correct property name of `uid`.*
48
+
49
+ ## v0.1.1 (2020-09-23)
50
+
51
+ - First release.
data/CODE_OF_CONDUCT.md CHANGED
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
55
55
  ## Enforcement
56
56
 
57
57
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at jesse.whitham@gmail.com. All
58
+ reported by contacting the project team at dev@ripaglobal.com. All
59
59
  complaints will be reviewed and investigated and will result in a response that
60
60
  is deemed necessary and appropriate to the circumstances. The project team is
61
61
  obligated to maintain confidentiality with regard to the reporter of an incident.
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
- # Omniauth::Azure::Activedirectory::V2
1
+ # OmniAuth::Azure::Activedirectory::V2
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/omniauth-azure-activedirectory-v2.svg)](https://badge.fury.io/rb/omniauth-azure-activedirectory-v2)
4
+ [![Build Status](https://app.travis-ci.com/RIPAGlobal/omniauth-azure-activedirectory-v2.svg?branch=master)](https://app.travis-ci.com/github/RIPAGlobal/omniauth-azure-activedirectory-v2)
5
+ [![License](https://img.shields.io/github/license/RIPAGlobal/omniauth-azure-activedirectory-v2.svg)](LICENSE.md)
2
6
 
3
7
  OAuth 2 authentication with [Azure ActiveDirectory's V2 API](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview). Rationale:
4
8
 
5
9
  * https://github.com/marknadig/omniauth-azure-oauth2 is no longer maintained.
6
10
  * https://github.com/marknadig/omniauth-azure-oauth2/pull/29 contains important additions.
7
11
 
8
- This gem combines the two.
12
+ This gem combines the two and makes some changes to support the full V2 API.
9
13
 
10
14
  The ActiveDirectory V1 auth API used OpenID Connect. If you need this, a gem from Microsoft [is available here](https://github.com/AzureAD/omniauth-azure-activedirectory), but seems to be abandoned.
11
15
 
@@ -31,15 +35,152 @@ Or install it yourself as:
31
35
 
32
36
  ## Usage
33
37
 
34
- See https://github.com/marknadig/omniauth-azure-oauth2 for background information.
38
+ Please start by reading https://github.com/marknadig/omniauth-azure-oauth2 for basic configuration and background information. Note that with this gem, you must use strategy name `azure_activedirectory_v2` rather than `azure_oauth2`. Additional configuration information is given below.
39
+
40
+ ### Configuration
41
+
42
+ #### With `OmniAuth::Builder`
43
+
44
+ You can do something like this for a static / fixed configuration:
45
+
46
+ ```ruby
47
+ use OmniAuth::Builder do
48
+ provider(
49
+ :azure_activedirectory_v2,
50
+ {
51
+ client_id: ENV['AZURE_CLIENT_ID'],
52
+ client_secret: ENV['AZURE_CLIENT_SECRET']
53
+ }
54
+ )
55
+ end
56
+ ```
57
+
58
+ ...or, if using a custom provider class (called `YouTenantProvider` in this example):
59
+
60
+ ```ruby
61
+ use OmniAuth::Builder do
62
+ provider(
63
+ :azure_activedirectory_v2,
64
+ YouTenantProvider
65
+ )
66
+ end
67
+ ```
68
+
69
+ #### With Devise
70
+
71
+ In your `config/initializers/devise.rb` file you can do something like this for a static / fixed configuration:
72
+
73
+ ```ruby
74
+ config.omniauth(
75
+ :azure_activedirectory_v2,
76
+ {
77
+ client_id: ENV['AZURE_CLIENT_ID'],
78
+ client_secret: ENV['AZURE_CLIENT_SECRET']
79
+ }
80
+ )
81
+ ```
82
+
83
+ ...or, if using a custom provider class (called `YouTenantProvider` in this example):
84
+
85
+ ```ruby
86
+ config.omniauth(
87
+ :azure_activedirectory_v2,
88
+ YouTenantProvider
89
+ )
90
+ ```
91
+
92
+ ### Configuration options
93
+
94
+ All of the items listed below are optional, unless noted otherwise. They can be provided either in a static configuration Hash as shown in examples above, or via *read accessor instance methods* in a provider class (more on this later).
95
+
96
+ | Option | Use |
97
+ | ------ | --- |
98
+ | `client_id` | **Mandatory.** Client ID for the 'application' (integration) configured on the Azure side. Found via the Azure UI. |
99
+ | `client_secret` | **Mandatory.** Client secret for the 'application' (integration) configured on the Azure side. Found via the Azure UI. |
100
+ | `base_azure_url` | Location of Azure login page, for specialised requirements; default is `OmniAuth::Strategies::AzureActivedirectoryV2::BASE_AZURE_URL` (at the time of writing, this is `https://login.microsoftonline.com`). |
101
+ | `tenant_id` | _Azure_ tenant ID for multi-tenanted use. Default is `common`. Forms part of the Azure OAuth URL - `{base}/{tenant_id}/oauth2/v2.0/...` |
102
+ | `custom_policy` | _Azure_ custom policy. Default is nil. Forms part of the Azure Token URL - `{base}/{tenant_id}/{custom_policy}/oauth2/v2.0/...` |
103
+ | `authorize_params` | Additional parameters passed as URL query data in the initial OAuth redirection to Microsoft. See below for more. Empty Hash default. |
104
+ | `domain_hint` | If defined, sets (overwriting, if already present) `domain_hint` inside `authorize_params`. Default `nil` / none. |
105
+ | `scope` | If defined, sets (overwriting, if already present) `scope` inside `authorize_params`. Default is `OmniAuth::Strategies::AzureActivedirectoryV2::DEFAULT_SCOPE` (at the time of writing, this is `'openid profile email'`). |
106
+
107
+ In addition, as a special case, if the request URL contains a query parameter `prompt`, then this will be written into `authorize_params` under that key, overwriting if present any other value there. Note that this comes from the current request URL at the time OAuth flow is commencing, _not_ via static options Hash data or via a custom provider class - but you _could_ just as easily set `scope` inside a custom `authorize_params` returned from a provider class, as shown in an example later; the request URL query mechanism is just another way of doing the same thing.
108
+
109
+ #### Explaining `custom_policy`
110
+
111
+ In the documentation for [requesting a token](https://learn.microsoft.com/en-us/azure/active-directory-b2c/access-tokens#request-a-token), Microsoft indicate that they want the name of custom policies to be given in the URL rather than in the body of the request:
112
+
113
+ ```
114
+ POST <tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token
115
+ ```
116
+
117
+ When the underlying `oath2` gem creates the request for getting a token via POST, it places all `params` (which would include anything you've provided in the normal configuration to name your custom policy) in the `body` of the request. Unfortunately, Microsoft ignores custom policies in the body and only looks for them in the URL.
118
+
119
+ If you set a `custom_policy` in your configuration, it will be included in the URL between the `tenant_id` and the remaining parts of the path (`/oauth2/v2.0/token`).
120
+
121
+ #### Explaining `authorize_params`
122
+
123
+ The `authorize_params` hash-like object contains key-value pairs which are transformed into URL query string data and added to existing standard OAuth query data in the URL used for the initial redirection from your web site, to the Microsoft Azure AD login page, at the start of OAuth flow. You can find these listed some way down the table just below an OAuth URL example at:
124
+
125
+ * https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#code-try-1
126
+
127
+ ...looking for in particular items from `prompt` onwards.
128
+
129
+ #### Dynamic options via a custom provider class
130
+
131
+ Documentation mentioned earlier at https://github.com/marknadig/omniauth-azure-oauth2#usage gives an example of setting tenant ID dynamically via a custom provider class. We can also use that class in other ways. For example, let's rewrite it thus:
132
+
133
+ ```ruby
134
+ class YouTenantProvider
135
+ def initialize(strategy)
136
+ @strategy = strategy
137
+ end
138
+
139
+ def client_id
140
+ ENV['AZURE_CLIENT_ID']
141
+ end
142
+
143
+ def client_secret
144
+ ENV['AZURE_CLIENT_SECRET']
145
+ end
146
+
147
+ def authorize_params
148
+ ap = {}
149
+
150
+ if @strategy.request && @strategy.request.params['login_hint']
151
+ ap['login_hint'] = @strategy.request.params['login_hint']
152
+ end
153
+
154
+ return ap
155
+ end
156
+ end
157
+ ```
158
+
159
+ In this example, we're providing custom `authorize_params`. You can just return a standard Ruby Hash here, using lower case String or Symbol keys. The `strategy` value given to the initializer is an instance of [`OmniAuth::StrategiesAzureActivedirectoryV2`](https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/blob/master/lib/omniauth/strategies/azure_activedirectory_v2.rb) which is a subclass of [`OmniAuth::Strategies::OAuth2`](https://www.rubydoc.info/gems/omniauth-oauth2/1.8.0/OmniAuth/Strategies/OAuth2), but that's not all that helpful! What's more useful is to know that **the Rails `request` object is available via `@strategy.request` and, likewise, the session store via `@strategy.session`**. This gives you a lot of flexibility for responding to an inbound request or user session, varying the parameters used for the Azure OAuth flow.
160
+
161
+ In method `#authorize_params` above, the request object is used to look for a `login_hint` query string entry, set in whichever view(s) is/are presented by your application for use when your users need to be redirected to the OmniAuth controller in order to kick off OAuth with Azure. The value is copied into the `authorize_params` Hash. Earlier, it was mentioned that there was a special case of `prompt` being pulled from the request URL query data, but that this could also be done via a custom provider - here, you can see how; just check `@strategy.request.params['prompt']` and copy that into `authorize_params` if preset.
162
+
163
+ > **NB:** Naming things is hard! The predecessor gem used the name `YouTenantProvider` since it was focused on custom tenant provision, but if using this in a more generic way, perhaps consider a more generic name such as, say, `CustomOmniAuthAzureProvider`.
35
164
 
36
165
 
37
166
 
38
167
  ## Contributing
39
168
 
40
- Bug reports and pull requests are welcome on GitHub at https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2. This project is intended to be a safe, welcoming space for collaboration so contributors must adhere to the [code of conduct](https://github.com/[USERNAME]/omniauth-azure-activedirectory-v2/blob/master/CODE_OF_CONDUCT.md).
169
+ Bug reports and pull requests are welcome on GitHub at https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2. This project is intended to be a safe, welcoming space for collaboration so contributors must adhere to the [code of conduct](https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/blob/master/CODE_OF_CONDUCT.md).
170
+
171
+ ### Getting running
172
+
173
+ * Fork the repository
174
+ * Check out your fork
175
+ * `cd` into the repository
176
+ * `bin/setup`
177
+ * `bundle exec rspec` to make sure all the tests run
41
178
 
179
+ ### Making changes
42
180
 
181
+ * Make your change
182
+ * Add tests and check that `bundle exec rspec` still runs successfully
183
+ * For new features (rather than bug fixes), update `README.md` with details
43
184
 
44
185
  ## License
45
186
 
@@ -49,4 +190,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
49
190
 
50
191
  ## Code of Conduct
51
192
 
52
- Everyone interacting in this project's codebases, issue trackers, chat rooms and mailing lists must follow the [code of conduct](https://github.com/[USERNAME]/omniauth-azure-activedirectory-v2/blob/master/CODE_OF_CONDUCT.md).
193
+ Everyone interacting in this project's codebases, issue trackers, chat rooms and mailing lists must follow the [code of conduct](https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/blob/master/CODE_OF_CONDUCT.md).
@@ -1,8 +1,9 @@
1
- module Omniauth
1
+ module OmniAuth
2
2
  module Azure
3
3
  module Activedirectory
4
4
  module V2
5
- VERSION = "0.1.1"
5
+ VERSION = "2.1.0"
6
+ DATE = "2023-09-16"
6
7
  end
7
8
  end
8
9
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'omniauth-oauth2'
2
4
 
3
5
  module OmniAuth
@@ -9,58 +11,105 @@ module OmniAuth
9
11
  option :tenant_provider, nil
10
12
 
11
13
  DEFAULT_SCOPE = 'openid profile email'
12
- USER_INFO_URL = 'https://graph.microsoft.com/v1.0/me'
13
14
 
14
15
  # tenant_provider must return client_id, client_secret and optionally tenant_id and base_azure_url
15
16
  args [:tenant_provider]
16
17
 
17
18
  def client
18
- if options.tenant_provider
19
- provider = options.tenant_provider.new(self)
19
+ provider = if options.tenant_provider
20
+ options.tenant_provider.new(self)
20
21
  else
21
- provider = options # if pass has to config, get mapped right on to options
22
+ options
22
23
  end
23
24
 
24
25
  options.client_id = provider.client_id
25
26
  options.client_secret = provider.client_secret
26
27
  options.tenant_id =
27
- provider.respond_to?(:tenant_id) ? provider.tenant_id : 'common'
28
+ provider.respond_to?(:tenant_id) ? provider.tenant_id : 'common'
28
29
  options.base_azure_url =
29
- provider.respond_to?(:base_azure_url) ? provider.base_azure_url : BASE_AZURE_URL
30
+ provider.respond_to?(:base_azure_url) ? provider.base_azure_url : BASE_AZURE_URL
31
+
32
+ if provider.respond_to?(:authorize_params)
33
+ options.authorize_params = provider.authorize_params
34
+ end
35
+
36
+ if provider.respond_to?(:domain_hint) && provider.domain_hint
37
+ options.authorize_params.domain_hint = provider.domain_hint
38
+ end
39
+
40
+ if defined?(request) && request.params['prompt']
41
+ options.authorize_params.prompt = request.params['prompt']
42
+ end
43
+
44
+ options.authorize_params.scope = if provider.respond_to?(:scope) && provider.scope
45
+ provider.scope
46
+ else
47
+ DEFAULT_SCOPE
48
+ end
30
49
 
31
- options.authorize_params = provider.authorize_params if provider.respond_to?(:authorize_params)
32
- options.authorize_params.domain_hint = provider.domain_hint if provider.respond_to?(:domain_hint) && provider.domain_hint
33
- options.authorize_params.prompt = request.params['prompt'] if defined? request && request.params['prompt']
34
- options.authorize_params.scope = (provider.scope if provider.respond_to?(:scope) && provider.scope) || DEFAULT_SCOPE
50
+ options.custom_policy =
51
+ provider.respond_to?(:custom_policy) ? provider.custom_policy : nil
35
52
 
36
53
  options.client_options.authorize_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/v2.0/authorize"
37
- options.client_options.token_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/v2.0/token"
54
+ options.client_options.token_url =
55
+ if options.custom_policy
56
+ "#{options.base_azure_url}/#{options.tenant_id}/#{options.custom_policy}/oauth2/v2.0/token"
57
+ else
58
+ "#{options.base_azure_url}/#{options.tenant_id}/oauth2/v2.0/token"
59
+ end
38
60
 
39
61
  super
40
62
  end
41
63
 
42
- uid {
43
- raw_info['id']
44
- }
64
+ uid { raw_info['oid'] }
45
65
 
46
66
  info do
47
67
  {
48
- name: raw_info['displayName'],
49
- first_name: raw_info['givenName'],
50
- last_name: raw_info['surname'],
51
- email: raw_info['userPrincipalName'],
52
- id: raw_info['id'],
68
+ name: raw_info['name'],
69
+ email: raw_info['email'] || raw_info['upn'],
70
+ nickname: raw_info['unique_name'],
71
+ first_name: raw_info['given_name'],
72
+ last_name: raw_info['family_name']
53
73
  }
54
74
  end
55
75
 
76
+ extra do
77
+ { raw_info: raw_info }
78
+ end
79
+
56
80
  def callback_url
57
- full_host + script_name + callback_path
81
+ full_host + callback_path
58
82
  end
59
83
 
84
+ # https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens
85
+ #
86
+ # Some account types from Microsoft seem to only have a decodable ID token,
87
+ # with JWT unable to decode the access token. Information is limited in those
88
+ # cases. Other account types provide an expanded set of data inside the auth
89
+ # token, which does decode as a JWT.
90
+ #
91
+ # Merge the two, allowing the expanded auth token data to overwrite the ID
92
+ # token data if keys collide, and use this as raw info.
93
+ #
60
94
  def raw_info
61
- @raw_info ||= access_token.get(USER_INFO_URL).parsed
62
- end
95
+ if @raw_info.nil?
96
+ id_token_data = begin
97
+ ::JWT.decode(access_token.params['id_token'], nil, false).first
98
+ rescue StandardError
99
+ {}
100
+ end
101
+ auth_token_data = begin
102
+ ::JWT.decode(access_token.token, nil, false).first
103
+ rescue StandardError
104
+ {}
105
+ end
106
+
107
+ id_token_data.merge!(auth_token_data)
108
+ @raw_info = id_token_data
109
+ end
63
110
 
111
+ @raw_info
112
+ end
64
113
  end
65
114
  end
66
- end
115
+ end
@@ -1,29 +1,49 @@
1
- require_relative 'lib/omniauth/azure_activedirectory_v2/version'
2
-
3
- Gem::Specification.new do |spec|
4
- spec.name = 'omniauth-azure-activedirectory-v2'
5
- spec.version = Omniauth::Azure::Activedirectory::V2::VERSION
6
- spec.authors = ['RIP Global']
7
- spec.email = ['dev@ripglobal.com']
8
-
9
- spec.summary = %q{OAuth 2 authentication with Azure ActiveDirectory's V2 API}
10
- spec.homepage = 'https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2'
11
- spec.license = 'MIT'
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
13
-
14
- spec.metadata['homepage_uri'] = spec.homepage
15
- spec.metadata['source_code_uri'] = 'https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2'
16
- spec.metadata['bug_tracker_uri'] = 'https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2/issues/'
17
- spec.metadata['changelog_uri'] = 'https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2/blob/master/CHANGELOG.md'
18
-
19
- # Specify which files should be added to the gem when it is released.
20
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
- end
24
- spec.bindir = 'exe'
25
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
- spec.require_paths = ['lib']
27
-
28
- spec.add_dependency 'omniauth-oauth2'
1
+ # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+ # stub: omniauth-azure-activedirectory-v2 1.0.0 ruby lib
4
+
5
+ $:.push File.expand_path( '../lib', __FILE__ )
6
+ require 'omniauth/azure_activedirectory_v2/version'
7
+
8
+ # https://guides.rubygems.org/specification-reference/
9
+ #
10
+ Gem::Specification.new do |s|
11
+ s.name = 'omniauth-azure-activedirectory-v2'
12
+ s.version = OmniAuth::Azure::Activedirectory::V2::VERSION
13
+ s.date = OmniAuth::Azure::Activedirectory::V2::DATE
14
+ s.summary = 'OAuth 2 authentication with the Azure ActiveDirectory V2 API.'
15
+ s.authors = [ 'RIPA Global' ]
16
+ s.email = [ 'dev@ripaglobal.com' ]
17
+ s.licenses = [ 'MIT' ]
18
+ s.homepage = 'https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2'
19
+
20
+ s.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
21
+ s.require_paths = ['lib']
22
+ s.bindir = 'exe'
23
+ s.files = %w{
24
+ README.md
25
+ CHANGELOG.md
26
+ CODE_OF_CONDUCT.md
27
+ LICENSE.txt
28
+
29
+ Gemfile
30
+ bin/console
31
+ bin/setup
32
+
33
+ lib/omniauth-azure-activedirectory-v2.rb
34
+ lib/omniauth/azure_activedirectory_v2.rb
35
+ lib/omniauth/azure_activedirectory_v2/version.rb
36
+ lib/omniauth/strategies/azure_activedirectory_v2.rb
37
+
38
+ omniauth-azure-activedirectory-v2.gemspec
39
+ }
40
+
41
+ s.metadata = {
42
+ 'homepage_uri' => 'https://www.ripaglobal.com/',
43
+ 'bug_tracker_uri' => 'https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/issues/',
44
+ 'changelog_uri' => 'https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/blob/master/CHANGELOG.md',
45
+ 'source_code_uri' => 'https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2'
46
+ }
47
+
48
+ s.add_runtime_dependency('omniauth-oauth2', '~> 1.8')
29
49
  end
metadata CHANGED
@@ -1,44 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-azure-activedirectory-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - RIP Global
7
+ - RIPA Global
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-23 00:00:00.000000000 Z
11
+ date: 2023-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth-oauth2
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.8'
27
27
  description:
28
28
  email:
29
- - dev@ripglobal.com
29
+ - dev@ripaglobal.com
30
30
  executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - ".gitignore"
35
- - ".rspec"
36
- - ".travis.yml"
34
+ - CHANGELOG.md
37
35
  - CODE_OF_CONDUCT.md
38
36
  - Gemfile
39
37
  - LICENSE.txt
40
38
  - README.md
41
- - Rakefile
42
39
  - bin/console
43
40
  - bin/setup
44
41
  - lib/omniauth-azure-activedirectory-v2.rb
@@ -46,14 +43,14 @@ files:
46
43
  - lib/omniauth/azure_activedirectory_v2/version.rb
47
44
  - lib/omniauth/strategies/azure_activedirectory_v2.rb
48
45
  - omniauth-azure-activedirectory-v2.gemspec
49
- homepage: https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2
46
+ homepage: https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2
50
47
  licenses:
51
48
  - MIT
52
49
  metadata:
53
- homepage_uri: https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2
54
- source_code_uri: https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2
55
- bug_tracker_uri: https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2/issues/
56
- changelog_uri: https://github.com/RIPGlobal/omniauth-azure-activedirectory-v2/blob/master/CHANGELOG.md
50
+ homepage_uri: https://www.ripaglobal.com/
51
+ bug_tracker_uri: https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/issues/
52
+ changelog_uri: https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/blob/master/CHANGELOG.md
53
+ source_code_uri: https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2
57
54
  post_install_message:
58
55
  rdoc_options: []
59
56
  require_paths:
@@ -69,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
66
  - !ruby/object:Gem::Version
70
67
  version: '0'
71
68
  requirements: []
72
- rubygems_version: 3.1.2
69
+ rubygems_version: 3.4.4
73
70
  signing_key:
74
71
  specification_version: 4
75
- summary: OAuth 2 authentication with Azure ActiveDirectory's V2 API
72
+ summary: OAuth 2 authentication with the Azure ActiveDirectory V2 API.
76
73
  test_files: []
data/.gitignore DELETED
@@ -1,16 +0,0 @@
1
- Gemfile.lock
2
-
3
- /.bundle/
4
- /.yardoc
5
- /_yardoc/
6
- /coverage/
7
- /doc/
8
- /pkg/
9
- /spec/reports/
10
- /tmp/
11
-
12
- # rspec failure tracking
13
- .rspec_status
14
-
15
- # ide
16
- .idea
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7.0
6
- before_install: gem install bundler -v 2.1.2
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec