omniauth-azure-oauth2 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 277d288ce60567e9f3dd948e30a53ff4241b2238
4
- data.tar.gz: 5b3a6edccbf4217230e55965cf7bce245a2faa62
3
+ metadata.gz: d9c73b1998879a637805a6e9bb99e474877b44f1
4
+ data.tar.gz: e6f364fd018413ca5ed2fb58cb26f63e946ccd9c
5
5
  SHA512:
6
- metadata.gz: 0285ebc4357800e6c8fb9a075a8f9f767dbe372329912832f75035a24a4ab6b1ba17f6e0995b5576d431721f289ab326c97fa41115338b3ded5b2d5ef9e082bf
7
- data.tar.gz: 32b6b1e9d5a822b823d2b024fec4f28e946a214f1276b1fa25820e282a42cc49f32f56ab456f97e60cfea4f9fc8ae3aa626081f344da33b5d9767aff913f3dc8
6
+ metadata.gz: 1ae29a25456cbae45d709dbd5d3fd125afcb6ff19d6169e0ea8a8d27a931e7221d4f40b271edd230fbdfb6988222c84dac9980553f805f9ef34c3e4ba9f23159
7
+ data.tar.gz: f9b8ddaa179edf69138b303afc33582b7809563f52c11e6c6c7814cb6e6ab515659541c6dbc85c51fa7a589812c3a56b7bd0175a92d3abf3303c75c05f2e08b3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # VERSION 0.0.3
2
+ * added common endpoint and removed mandatory requirement for tenant-id
3
+ * upgraded jwt
4
+
1
5
  # VERSION 0.0.1
2
6
 
3
7
  * Initial build
data/README.md CHANGED
@@ -29,20 +29,40 @@ Permissions need Delegated Permissions to at least have "Enable sign-on and read
29
29
 
30
30
  Note: Seems like the terminology is still fluid, so follow the MS guidance (buwahaha) to set this up.
31
31
 
32
- The TenantInfo information can be a hash or class. It must provide client_id, client_secret and tenant_id.
33
- Optionally a domain_hint. For a simple single-tenant app, this could be:
32
+ The TenantInfo information can be a hash or class. It must provide client_id and client_secret.
33
+ Optionally a domain_hint and tenant_id. For a simple single-tenant app, this could be:
34
34
 
35
35
  ```ruby
36
36
  use OmniAuth::Builder do
37
37
  provider :azure_oauth2,
38
38
  {
39
39
  client_id: ENV['AZURE_CLIENT_ID'],
40
- client_secret: ENV['AZURE_CLIENT_ID'],
40
+ client_secret: ENV['AZURE_CLIENT_SECRET'],
41
41
  tenant_id: ENV['AZURE_TENANT_ID']
42
42
  }
43
43
  end
44
44
  ```
45
45
 
46
+ Or the alternative format for use with [devise](https://github.com/plataformatec/devise):
47
+
48
+ ```ruby
49
+ config.omniauth :azure_oauth2, client_id: ENV['AZURE_CLIENT_ID'],
50
+ client_secret: ENV['AZURE_CLIENT_SECRET'], tenant_id: ENV['AZURE_TENANT_ID']
51
+ ```
52
+
53
+ For multi-tenant apps where you don't know the tenant_id in advance, simply leave out the tenant_id to use the
54
+ [common endpoint](http://msdn.microsoft.com/en-us/library/azure/dn645542.aspx).
55
+
56
+ ```ruby
57
+ use OmniAuth::Builder do
58
+ provider :azure_oauth2,
59
+ {
60
+ client_id: ENV['AZURE_CLIENT_ID'],
61
+ client_secret: ENV['AZURE_CLIENT_SECRET']
62
+ }
63
+ end
64
+ ```
65
+
46
66
  For dynamic tenant assignment, pass a class that supports those same attributes and accepts the strategy as a parameter
47
67
 
48
68
  ```ruby
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module AzureOauth2
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -13,7 +13,7 @@ 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, tenant_id
16
+ # tenant_provider must return client_id, client_secret and optionally tenant_id
17
17
  args [:tenant_provider]
18
18
 
19
19
  def client
@@ -25,7 +25,8 @@ module OmniAuth
25
25
 
26
26
  options.client_id = provider.client_id
27
27
  options.client_secret = provider.client_secret
28
- options.tenant_id = provider.tenant_id
28
+ options.tenant_id =
29
+ provider.respond_to?(:tenant_id) ? provider.tenant_id : 'common'
29
30
 
30
31
  options.authorize_params.domain_hint = provider.domain_hint if provider.respond_to?(:domain_hint) && provider.domain_hint
31
32
  options.client_options.authorize_url = "#{BASE_AZURE_URL}/#{options.tenant_id}/oauth2/authorize"
@@ -44,14 +45,15 @@ module OmniAuth
44
45
  name: raw_info['unique_name'],
45
46
  first_name: raw_info['given_name'],
46
47
  last_name: raw_info['family_name'],
47
- email: raw_info['email'] || raw_info['upn']
48
+ email: raw_info['email'] || raw_info['upn'],
49
+ oid: raw_info['oid']
48
50
  }
49
51
  end
50
52
 
51
53
 
52
54
  def raw_info
53
55
  # it's all here in JWT http://msdn.microsoft.com/en-us/library/azure/dn195587.aspx
54
- @raw_info ||= JWT.decode(access_token.token, nil, false)
56
+ @raw_info ||= JWT.decode(access_token.token, nil, false).first
55
57
  end
56
58
 
57
59
  end
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.license = "MIT"
18
18
 
19
19
  gem.add_dependency 'omniauth', '~> 1.0'
20
- gem.add_dependency 'jwt', '~> 0.1'
20
+ gem.add_dependency 'jwt', '~> 1.0.0'
21
21
 
22
22
  gem.add_runtime_dependency 'omniauth-oauth2', '~> 1.1'
23
23
 
@@ -53,6 +53,22 @@ describe OmniAuth::Strategies::AzureOauth2 do
53
53
 
54
54
  end
55
55
 
56
+ describe 'static common configuration' do
57
+ let(:options) { @options || {} }
58
+ subject do
59
+ OmniAuth::Strategies::AzureOauth2.new(app, {client_id: 'id', client_secret: 'secret'}.merge(options))
60
+ end
61
+
62
+ describe '#client' do
63
+ it 'has correct authorize url' do
64
+ expect(subject.client.options[:authorize_url]).to eql('https://login.windows.net/common/oauth2/authorize')
65
+ end
66
+
67
+ it 'has correct token url' do
68
+ expect(subject.client.options[:token_url]).to eql('https://login.windows.net/common/oauth2/token')
69
+ end
70
+ end
71
+ end
56
72
 
57
73
  describe 'dynamic configuration' do
58
74
  let(:provider_klass) {
@@ -109,4 +125,35 @@ describe OmniAuth::Strategies::AzureOauth2 do
109
125
  end
110
126
 
111
127
  end
128
+
129
+ describe 'dynamic common configuration' do
130
+ let(:provider_klass) {
131
+ Class.new {
132
+ def initialize(strategy)
133
+ end
134
+
135
+ def client_id
136
+ 'id'
137
+ end
138
+
139
+ def client_secret
140
+ 'secret'
141
+ end
142
+ }
143
+ }
144
+
145
+ subject do
146
+ OmniAuth::Strategies::AzureOauth2.new(app, provider_klass)
147
+ end
148
+
149
+ describe '#client' do
150
+ it 'has correct authorize url' do
151
+ expect(subject.client.options[:authorize_url]).to eql('https://login.windows.net/common/oauth2/authorize')
152
+ end
153
+
154
+ it 'has correct token url' do
155
+ expect(subject.client.options[:token_url]).to eql('https://login.windows.net/common/oauth2/token')
156
+ end
157
+ end
158
+ end
112
159
  end
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.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Nadig
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-31 00:00:00.000000000 Z
11
+ date: 2014-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0.1'
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: omniauth-oauth2
43
43
  requirement: !ruby/object:Gem::Requirement