aptible-auth 1.1.0 → 1.2.4
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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile +0 -5
- data/README.md +0 -2
- data/aptible-auth.gemspec +1 -2
- data/lib/aptible/auth/reauthenticate_organization.rb +6 -0
- data/lib/aptible/auth/resource.rb +1 -0
- data/lib/aptible/auth/token.rb +2 -0
- data/lib/aptible/auth/version.rb +1 -1
- data/lib/oauth2/response_parser.rb +5 -0
- data/lib/oauth2/strategy/token_exchange.rb +40 -0
- data/spec/oauth2/lib/token_exchange_spec.rb +58 -0
- metadata +16 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3882d6be5ba4b7d248e84a3e6eced0eba7cd6701108ccbc3bd609eddb4cb0bd
|
4
|
+
data.tar.gz: 733da04d17bb312b812988ed832426c72f784b6d97a7734f12f1f9cdd0872242
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa34d5cc0b4f99db2820f52d224b3092732dc93474bb85ec87798572662eefd4c8d4293cd21330a59d32eac560c15547799cce61f18011f0db78615172e8215f
|
7
|
+
data.tar.gz: 5bdbbe7bd497e426d9c7535354ed8aa0748e3d64309eb357aacff5d8ff96a9d814933f39ec3353127e8e47d943af7a51d3343e1854ecfa49f47ee3681780e458
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -14,8 +14,6 @@ Add the following line to your application's Gemfile.
|
|
14
14
|
|
15
15
|
And then run `bundle install`.
|
16
16
|
|
17
|
-
A forked version of the OAuth2 gem is necessary until [intridea/oauth2#165](https://github.com/intridea/oauth2/pull/165) and [intridea/oauth2#166](https://github.com/intridea/oauth2/pull/166) are merged.
|
18
|
-
|
19
17
|
## Usage
|
20
18
|
|
21
19
|
First, get a token:
|
data/aptible-auth.gemspec
CHANGED
@@ -22,10 +22,9 @@ Gem::Specification.new do |spec|
|
|
22
22
|
|
23
23
|
spec.add_dependency 'aptible-resource', '~> 1.0'
|
24
24
|
spec.add_dependency 'gem_config'
|
25
|
-
spec.add_dependency 'oauth2
|
25
|
+
spec.add_dependency 'oauth2', '1.4.7'
|
26
26
|
|
27
27
|
spec.add_development_dependency 'aptible-tasks', '>= 0.6.0'
|
28
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
29
28
|
spec.add_development_dependency 'pry'
|
30
29
|
spec.add_development_dependency 'rake'
|
31
30
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
data/lib/aptible/auth/token.rb
CHANGED
data/lib/aptible/auth/version.rb
CHANGED
@@ -0,0 +1,5 @@
|
|
1
|
+
# rubocop:disable all
|
2
|
+
# NOTE: This code has been in oauth2 master since 2018 but is awaiting a 2.0 release of oauth2
|
3
|
+
OAuth2::Response.register_parser(:json, ['application/json', 'text/javascript', 'application/hal+json', 'application/vnd.collection+json', 'application/vnd.api+json']) do |body|
|
4
|
+
MultiJson.load(body) rescue body # rubocop:disable RescueModifier
|
5
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# rubocop:disable all
|
2
|
+
module OAuth2
|
3
|
+
module Strategy
|
4
|
+
# The Token Exchange strategy
|
5
|
+
#
|
6
|
+
# @see https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-03#section-4.1
|
7
|
+
class TokenExchange < Base
|
8
|
+
GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:token-exchange'
|
9
|
+
|
10
|
+
# Not used for this strategy
|
11
|
+
#
|
12
|
+
# @raise [NotImplementedError]
|
13
|
+
def authorize_url
|
14
|
+
fail(NotImplementedError, 'The authorization endpoint is not used in this strategy')
|
15
|
+
end
|
16
|
+
|
17
|
+
# Retrieve an access token given the specified End User username and password.
|
18
|
+
#
|
19
|
+
# @param [String] username the End User username
|
20
|
+
# @param [String] password the End User password
|
21
|
+
# @param [Hash] params additional params
|
22
|
+
def get_token(actor_token, actor_token_type, subject_token, subject_token_type, params = {}, opts = {})
|
23
|
+
params = {'grant_type' => GRANT_TYPE,
|
24
|
+
'actor_token' => actor_token,
|
25
|
+
'actor_token_type' => actor_token_type,
|
26
|
+
'subject_token' => subject_token,
|
27
|
+
'subject_token_type' => subject_token_type
|
28
|
+
}.merge(params)
|
29
|
+
@client.get_token(params, opts)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Add strategy to OAuth2::Client
|
35
|
+
class Client
|
36
|
+
def token_exchange
|
37
|
+
@token_exchange ||= OAuth2::Strategy::TokenExchange.new(self)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# rubocop:disable all
|
2
|
+
require 'oauth2'
|
3
|
+
require 'oauth2/strategy/token_exchange'
|
4
|
+
RSpec.describe OAuth2::Strategy::TokenExchange do
|
5
|
+
let(:client) do
|
6
|
+
cli = OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com')
|
7
|
+
cli.connection.build do |b|
|
8
|
+
b.adapter :test do |stub|
|
9
|
+
stub.post('/oauth/token') do |env|
|
10
|
+
case @mode
|
11
|
+
when 'formencoded'
|
12
|
+
[200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
|
13
|
+
when 'json'
|
14
|
+
[200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
cli
|
20
|
+
end
|
21
|
+
subject { client.token_exchange }
|
22
|
+
|
23
|
+
describe '#authorize_url' do
|
24
|
+
it 'raises NotImplementedError' do
|
25
|
+
expect { subject.authorize_url }.to raise_error(NotImplementedError)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
%w(json formencoded).each do |mode|
|
30
|
+
describe "#get_token (#{mode})" do
|
31
|
+
before do
|
32
|
+
@mode = mode
|
33
|
+
@access = subject.get_token('actor token', 'actor token type', 'subject token', 'subject token type')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns AccessToken with same Client' do
|
37
|
+
expect(@access.client).to eq(client)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'returns AccessToken with #token' do
|
41
|
+
expect(@access.token).to eq('salmon')
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns AccessToken with #refresh_token' do
|
45
|
+
expect(@access.refresh_token).to eq('trout')
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'returns AccessToken with #expires_in' do
|
49
|
+
expect(@access.expires_in).to eq(600)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'returns AccessToken with #expires_at' do
|
53
|
+
expect(@access.expires_at).not_to be_nil
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptible-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aptible-resource
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: oauth2
|
42
|
+
name: oauth2
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 1.4.7
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.4.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: aptible-tasks
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.6.0
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.3'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.3'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: pry
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,6 +159,7 @@ files:
|
|
173
159
|
- lib/aptible/auth/invitation.rb
|
174
160
|
- lib/aptible/auth/membership.rb
|
175
161
|
- lib/aptible/auth/organization.rb
|
162
|
+
- lib/aptible/auth/reauthenticate_organization.rb
|
176
163
|
- lib/aptible/auth/resource.rb
|
177
164
|
- lib/aptible/auth/role.rb
|
178
165
|
- lib/aptible/auth/saml_configuration.rb
|
@@ -182,19 +169,22 @@ files:
|
|
182
169
|
- lib/aptible/auth/user.rb
|
183
170
|
- lib/aptible/auth/version.rb
|
184
171
|
- lib/aptible/auth/whitelist_membership.rb
|
172
|
+
- lib/oauth2/response_parser.rb
|
173
|
+
- lib/oauth2/strategy/token_exchange.rb
|
185
174
|
- spec/aptible/auth/agent_spec.rb
|
186
175
|
- spec/aptible/auth/organization_spec.rb
|
187
176
|
- spec/aptible/auth/resource_spec.rb
|
188
177
|
- spec/aptible/auth/token_spec.rb
|
189
178
|
- spec/aptible/auth/user_spec.rb
|
190
179
|
- spec/aptible/auth_spec.rb
|
180
|
+
- spec/oauth2/lib/token_exchange_spec.rb
|
191
181
|
- spec/shared/set_env.rb
|
192
182
|
- spec/spec_helper.rb
|
193
183
|
homepage: https://github.com/aptible/aptible-auth-ruby
|
194
184
|
licenses:
|
195
185
|
- MIT
|
196
186
|
metadata: {}
|
197
|
-
post_install_message:
|
187
|
+
post_install_message:
|
198
188
|
rdoc_options: []
|
199
189
|
require_paths:
|
200
190
|
- lib
|
@@ -209,9 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
199
|
- !ruby/object:Gem::Version
|
210
200
|
version: '0'
|
211
201
|
requirements: []
|
212
|
-
|
213
|
-
|
214
|
-
signing_key:
|
202
|
+
rubygems_version: 3.0.3
|
203
|
+
signing_key:
|
215
204
|
specification_version: 4
|
216
205
|
summary: Ruby client for auth.aptible.com
|
217
206
|
test_files:
|
@@ -221,5 +210,6 @@ test_files:
|
|
221
210
|
- spec/aptible/auth/token_spec.rb
|
222
211
|
- spec/aptible/auth/user_spec.rb
|
223
212
|
- spec/aptible/auth_spec.rb
|
213
|
+
- spec/oauth2/lib/token_exchange_spec.rb
|
224
214
|
- spec/shared/set_env.rb
|
225
215
|
- spec/spec_helper.rb
|