conjur-api 4.25.0 → 4.25.1
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/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/jenkins.sh +1 -1
- data/lib/conjur-api/version.rb +1 -1
- data/lib/conjur/base.rb +21 -30
- data/spec/lib/api_spec.rb +30 -7
- 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: 6a4d39e4a78aca87161fdd361e061d8fa61eb103
|
4
|
+
data.tar.gz: 18c7f65ecd58167229788f3d01ffd55c22198341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92e237543b838497692b062f514d3bf17693f82a1705a3527146e262417629c667a3bd5f2c4cf9247eac630bf0985d990a45f31b5d8f1bc93d0e557b1305b2ee
|
7
|
+
data.tar.gz: ab2049acd3830d358897ab9b3bc4c2450c088c6c94bc8ac7bab5c03fa4ae320b9294d661ca87a1360944ebe95ef8c1f8bbdfd1aa66c65025d60277b1fc633d32
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/jenkins.sh
CHANGED
data/lib/conjur-api/version.rb
CHANGED
data/lib/conjur/base.rb
CHANGED
@@ -104,7 +104,7 @@ module Conjur
|
|
104
104
|
# @param [String] remote_ip the optional IP address to be recorded in the audit record.
|
105
105
|
# @return [Conjur::API] an api that will authenticate with the given username and api key.
|
106
106
|
def new_from_key(username, api_key, remote_ip = nil)
|
107
|
-
self.new username, api_key,
|
107
|
+
self.new.init_from_key username, api_key, remote_ip
|
108
108
|
end
|
109
109
|
|
110
110
|
|
@@ -139,7 +139,7 @@ module Conjur
|
|
139
139
|
# @param [String] remote_ip the optional IP address to be recorded in the audit record.
|
140
140
|
# @return [Conjur::API] an api that will authenticate with the token
|
141
141
|
def new_from_token(token, remote_ip = nil)
|
142
|
-
self.new
|
142
|
+
self.new.init_from_token token, remote_ip
|
143
143
|
end
|
144
144
|
|
145
145
|
def encode_audit_ids(ids)
|
@@ -151,28 +151,6 @@ module Conjur
|
|
151
151
|
end
|
152
152
|
|
153
153
|
end
|
154
|
-
|
155
|
-
# Create a new instance from a username and api key or a token.
|
156
|
-
#
|
157
|
-
# @note You should use {Conjur::API.new_from_token} or {Conjur::API.new_from_key} instead of calling this method
|
158
|
-
# directly.
|
159
|
-
#
|
160
|
-
# This method requires that you pass **either** a username and api_key **or** a token Hash.
|
161
|
-
#
|
162
|
-
# @param [String] username the username to authenticate as
|
163
|
-
# @param [String] api_key the api key or password to use when authenticating
|
164
|
-
# @param [Hash] token the token to use when making authenticated requuests.
|
165
|
-
# @param [String] remote_ip the optional IP address to be recorded in the audit record.
|
166
|
-
#
|
167
|
-
# @api internal
|
168
|
-
def initialize username, api_key, token, remote_ip = nil
|
169
|
-
@username = username
|
170
|
-
@api_key = api_key
|
171
|
-
@token = token
|
172
|
-
@remote_ip = remote_ip
|
173
|
-
|
174
|
-
raise "Expecting ( username and api_key ) or token" unless ( username && api_key ) || token
|
175
|
-
end
|
176
154
|
|
177
155
|
#@!attribute [r] api_key
|
178
156
|
# The api key used to create this instance. This is only present when you created the api with {Conjur::API.new_from_key}.#
|
@@ -254,14 +232,14 @@ module Conjur
|
|
254
232
|
#
|
255
233
|
# @return The API instance.
|
256
234
|
def with_privilege privilege
|
257
|
-
self.
|
235
|
+
self.clone.tap do |api|
|
258
236
|
api.privilege = privilege
|
259
237
|
end
|
260
238
|
end
|
261
239
|
|
262
240
|
def with_audit_roles role_ids
|
263
241
|
role_ids = Array(role_ids)
|
264
|
-
self.
|
242
|
+
self.clone.tap do |api|
|
265
243
|
# Ensure that all role ids are fully qualified
|
266
244
|
api.audit_roles = role_ids.collect { |id| api.role(id).roleid }
|
267
245
|
end
|
@@ -269,14 +247,27 @@ module Conjur
|
|
269
247
|
|
270
248
|
def with_audit_resources resource_ids
|
271
249
|
resource_ids = Array(resource_ids)
|
272
|
-
self.
|
250
|
+
self.clone.tap do |api|
|
273
251
|
# Ensure that all resource ids are fully qualified
|
274
252
|
api.audit_resources = resource_ids.collect { |id| api.resource(id).resourceid }
|
275
253
|
end
|
276
254
|
end
|
277
255
|
|
278
|
-
|
256
|
+
def init_from_key username, api_key, remote_ip = nil
|
257
|
+
@username = username
|
258
|
+
@api_key = api_key
|
259
|
+
@remote_ip = remote_ip
|
260
|
+
self
|
261
|
+
end
|
279
262
|
|
263
|
+
def init_from_token token, remote_ip = nil
|
264
|
+
@token = token
|
265
|
+
@remote_ip = remote_ip
|
266
|
+
self
|
267
|
+
end
|
268
|
+
|
269
|
+
private
|
270
|
+
attr_accessor :token_born
|
280
271
|
|
281
272
|
# Tries to refresh the token if possible.
|
282
273
|
#
|
@@ -284,7 +275,7 @@ module Conjur
|
|
284
275
|
# unavailable API key; otherwise, the new token.
|
285
276
|
def refresh_token
|
286
277
|
return false unless @api_key
|
287
|
-
|
278
|
+
self.token_born = gettime
|
288
279
|
@token = Conjur::API.authenticate(@username, @api_key)
|
289
280
|
end
|
290
281
|
|
@@ -307,7 +298,7 @@ module Conjur
|
|
307
298
|
end
|
308
299
|
|
309
300
|
def token_age
|
310
|
-
|
301
|
+
token_born && (gettime - token_born)
|
311
302
|
end
|
312
303
|
end
|
313
304
|
end
|
data/spec/lib/api_spec.rb
CHANGED
@@ -254,15 +254,38 @@ describe Conjur::API do
|
|
254
254
|
expect(api.credentials).to eq({ headers: { authorization: "Token token=\"#{Base64.strict_encode64(token.to_json)}\"" }, username: login })
|
255
255
|
end
|
256
256
|
|
257
|
-
|
258
|
-
|
259
|
-
|
257
|
+
context "after expiration" do
|
258
|
+
|
259
|
+
shared_examples "it gets a new token" do
|
260
|
+
it 'by refreshing' do
|
261
|
+
allow(Conjur::API).to receive(:authenticate).with(login, api_key).and_return token
|
262
|
+
expect(Time.parse(api.token['timestamp'])).to be_within(5.seconds).of(Time.now)
|
263
|
+
|
264
|
+
time_travel 6.minutes
|
265
|
+
new_token = token.merge "timestamp" => Time.now.to_s
|
266
|
+
|
267
|
+
expect(Conjur::API).to receive(:authenticate).with(login, api_key).and_return new_token
|
268
|
+
expect(api.token).to eq(new_token)
|
269
|
+
end
|
270
|
+
end
|
260
271
|
|
261
|
-
|
262
|
-
|
272
|
+
it_should_behave_like "it gets a new token"
|
273
|
+
|
274
|
+
context "with elevated privilege" do
|
275
|
+
subject(:api) { Conjur::API.new_from_key(*api_args).with_privilege('reveal') }
|
276
|
+
it_should_behave_like "it gets a new token"
|
277
|
+
end
|
278
|
+
|
279
|
+
context "with audit roles" do
|
280
|
+
subject(:api) { Conjur::API.new_from_key(*api_args).with_audit_roles('account:host:host1') }
|
281
|
+
it_should_behave_like "it gets a new token"
|
282
|
+
end
|
283
|
+
|
284
|
+
context "with audit resources" do
|
285
|
+
subject(:api) { Conjur::API.new_from_key(*api_args).with_audit_resources('account:webservice:service1') }
|
286
|
+
it_should_behave_like "it gets a new token"
|
287
|
+
end
|
263
288
|
|
264
|
-
expect(Conjur::API).to receive(:authenticate).with(login, api_key).and_return new_token
|
265
|
-
expect(api.token).to eq(new_token)
|
266
289
|
end
|
267
290
|
end
|
268
291
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conjur-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.25.
|
4
|
+
version: 4.25.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafal Rzepecki
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|