omniauth-azure-oauth2 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -2
- data/README.md +3 -0
- data/lib/omniauth/azure_oauth2/version.rb +1 -1
- data/lib/omniauth/strategies/azure_oauth2.rb +6 -4
- data/spec/omniauth/strategies/azure_oauth2_spec.rb +103 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b934d53deb625528b9f999ca581fa4c14cffc555
|
4
|
+
data.tar.gz: 316f91e22960627a3b9ec1d72c7810a50b927d1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b98d6265575c2f747103a0f329f537ce517ccc5743eda6a8698d4834e0ce74e59789aaad85abc64ba7ef6c31edbc1676bc670806340f38cd73d2073f7c505366
|
7
|
+
data.tar.gz: bf2ddfc11a676457d962ea484013f0981f9735a38662203366e07bc17fe813849b1641da1a9dc640eddfe31b9c49a180ed403d310087fa32f52dfcd1842ac962
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
# Version 0.0.
|
1
|
+
# Version 0.0.9
|
2
|
+
* Added support for dynamic tenant urls. Thanks @marcus-fellinger-esc
|
3
|
+
|
4
|
+
# Version 0.0.8
|
2
5
|
* Upgrade to omniauth-oauth2 1.4.0 and fix callback url issue
|
3
|
-
* Allow prompt parameter
|
6
|
+
* Allow prompt parameter, thanks @hilu
|
4
7
|
* Add tenant id to info
|
5
8
|
* Updated base url
|
6
9
|
|
data/README.md
CHANGED
@@ -101,6 +101,9 @@ use OmniAuth::Builder do
|
|
101
101
|
end
|
102
102
|
```
|
103
103
|
|
104
|
+
The base_azure_url can be overridden in the provider configuration for different locales; e.g. `base_azure_url: "https://login.microsoftonline.de"`
|
105
|
+
|
106
|
+
|
104
107
|
## Auth Hash Schema
|
105
108
|
|
106
109
|
The following information is provided back to you for this provider:
|
@@ -13,25 +13,27 @@ module OmniAuth
|
|
13
13
|
# AD resource identifier
|
14
14
|
option :resource, '00000002-0000-0000-c000-000000000000'
|
15
15
|
|
16
|
-
# tenant_provider must return client_id, client_secret and optionally tenant_id
|
16
|
+
# tenant_provider must return client_id, client_secret and optionally tenant_id and base_azure_url
|
17
17
|
args [:tenant_provider]
|
18
18
|
|
19
19
|
def client
|
20
20
|
if options.tenant_provider
|
21
21
|
provider = options.tenant_provider.new(self)
|
22
22
|
else
|
23
|
-
provider = options # if pass has to config, get mapped right on to
|
23
|
+
provider = options # if pass has to config, get mapped right on to options
|
24
24
|
end
|
25
25
|
|
26
26
|
options.client_id = provider.client_id
|
27
27
|
options.client_secret = provider.client_secret
|
28
28
|
options.tenant_id =
|
29
29
|
provider.respond_to?(:tenant_id) ? provider.tenant_id : 'common'
|
30
|
+
options.base_azure_url =
|
31
|
+
provider.respond_to?(:base_azure_url) ? provider.base_azure_url : BASE_AZURE_URL
|
30
32
|
|
31
33
|
options.authorize_params.domain_hint = provider.domain_hint if provider.respond_to?(:domain_hint) && provider.domain_hint
|
32
34
|
options.authorize_params.prompt = request.params['prompt'] if request.params['prompt']
|
33
|
-
options.client_options.authorize_url = "#{
|
34
|
-
options.client_options.token_url = "#{
|
35
|
+
options.client_options.authorize_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/authorize"
|
36
|
+
options.client_options.token_url = "#{options.base_azure_url}/#{options.tenant_id}/oauth2/token"
|
35
37
|
|
36
38
|
options.token_params.resource = options.resource
|
37
39
|
super
|
@@ -64,6 +64,46 @@ describe OmniAuth::Strategies::AzureOauth2 do
|
|
64
64
|
|
65
65
|
end
|
66
66
|
|
67
|
+
describe 'static configuration - german' do
|
68
|
+
let(:options) { @options || {} }
|
69
|
+
subject do
|
70
|
+
OmniAuth::Strategies::AzureOauth2.new(app, {client_id: 'id', client_secret: 'secret', tenant_id: 'tenant', base_azure_url: 'https://login.microsoftonline.de'}.merge(options))
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#client' do
|
74
|
+
it 'has correct authorize url' do
|
75
|
+
allow(subject).to receive(:request) { request }
|
76
|
+
expect(subject.client.options[:authorize_url]).to eql('https://login.microsoftonline.de/tenant/oauth2/authorize')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'has correct authorize params' do
|
80
|
+
allow(subject).to receive(:request) { request }
|
81
|
+
subject.client
|
82
|
+
expect(subject.authorize_params[:domain_hint]).to be_nil
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'has correct token url' do
|
86
|
+
allow(subject).to receive(:request) { request }
|
87
|
+
expect(subject.client.options[:token_url]).to eql('https://login.microsoftonline.de/tenant/oauth2/token')
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'has correct token params' do
|
91
|
+
allow(subject).to receive(:request) { request }
|
92
|
+
subject.client
|
93
|
+
expect(subject.token_params[:resource]).to eql('00000002-0000-0000-c000-000000000000')
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "overrides" do
|
97
|
+
it 'should override domain_hint' do
|
98
|
+
@options = {domain_hint: 'hint'}
|
99
|
+
allow(subject).to receive(:request) { request }
|
100
|
+
subject.client
|
101
|
+
expect(subject.authorize_params[:domain_hint]).to eql('hint')
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
67
107
|
describe 'static common configuration' do
|
68
108
|
let(:options) { @options || {} }
|
69
109
|
subject do
|
@@ -145,6 +185,69 @@ describe OmniAuth::Strategies::AzureOauth2 do
|
|
145
185
|
|
146
186
|
end
|
147
187
|
|
188
|
+
describe 'dynamic configuration - german' do
|
189
|
+
let(:provider_klass) {
|
190
|
+
Class.new {
|
191
|
+
def initialize(strategy)
|
192
|
+
end
|
193
|
+
|
194
|
+
def client_id
|
195
|
+
'id'
|
196
|
+
end
|
197
|
+
|
198
|
+
def client_secret
|
199
|
+
'secret'
|
200
|
+
end
|
201
|
+
|
202
|
+
def tenant_id
|
203
|
+
'tenant'
|
204
|
+
end
|
205
|
+
|
206
|
+
def base_azure_url
|
207
|
+
'https://login.microsoftonline.de'
|
208
|
+
end
|
209
|
+
}
|
210
|
+
}
|
211
|
+
|
212
|
+
subject do
|
213
|
+
OmniAuth::Strategies::AzureOauth2.new(app, provider_klass)
|
214
|
+
end
|
215
|
+
|
216
|
+
before do
|
217
|
+
allow(subject).to receive(:request) { request }
|
218
|
+
end
|
219
|
+
|
220
|
+
describe '#client' do
|
221
|
+
it 'has correct authorize url' do
|
222
|
+
expect(subject.client.options[:authorize_url]).to eql('https://login.microsoftonline.de/tenant/oauth2/authorize')
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'has correct authorize params' do
|
226
|
+
subject.client
|
227
|
+
expect(subject.authorize_params[:domain_hint]).to be_nil
|
228
|
+
end
|
229
|
+
|
230
|
+
it 'has correct token url' do
|
231
|
+
expect(subject.client.options[:token_url]).to eql('https://login.microsoftonline.de/tenant/oauth2/token')
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'has correct token params' do
|
235
|
+
subject.client
|
236
|
+
expect(subject.token_params[:resource]).to eql('00000002-0000-0000-c000-000000000000')
|
237
|
+
end
|
238
|
+
|
239
|
+
# todo: how to get this working?
|
240
|
+
# describe "overrides" do
|
241
|
+
# it 'should override domain_hint' do
|
242
|
+
# provider_klass.domain_hint = 'hint'
|
243
|
+
# subject.client
|
244
|
+
# expect(subject.authorize_params[:domain_hint]).to eql('hint')
|
245
|
+
# end
|
246
|
+
# end
|
247
|
+
end
|
248
|
+
|
249
|
+
end
|
250
|
+
|
148
251
|
describe 'dynamic common configuration' do
|
149
252
|
let(:provider_klass) {
|
150
253
|
Class.new {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-azure-oauth2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Nadig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|