vault 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +14 -1
- data/README.md +1 -1
- data/lib/vault/api/auth.rb +40 -0
- data/lib/vault/api/auth_token.rb +37 -0
- data/lib/vault/client.rb +6 -1
- data/lib/vault/defaults.rb +12 -3
- data/lib/vault/version.rb +1 -1
- 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: c591681b73cba4f23a6c399ce65ecb232be4c8bb
|
4
|
+
data.tar.gz: 7f01da9d58aae383b63dd8bc666db5ca7e2181d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1efa7198ad5a0713ba37826978cd417ac6de66da5023d220890b092c8758af7fb9a7a494ea9db685e1e21011e4f62fc4379c42b50f0d3fa6992a68d57ad8a319
|
7
|
+
data.tar.gz: 415e4410e7f5ba98827996d47ad10ef8f81caa12dd0a213698b019306717bfb08694a2ea598428a72629c3c6180739a49f6541c9553f3355f33391efcd6adc73
|
data/.travis.yml
CHANGED
@@ -3,7 +3,7 @@ cache: bundler
|
|
3
3
|
sudo: false
|
4
4
|
|
5
5
|
before_install: |-
|
6
|
-
wget -O vault.zip -q https://releases.hashicorp.com/vault/0.5.
|
6
|
+
wget -O vault.zip -q https://releases.hashicorp.com/vault/0.5.2/vault_0.5.2_linux_amd64.zip
|
7
7
|
unzip vault.zip
|
8
8
|
mkdir ~/bin
|
9
9
|
mv vault ~/bin
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
# Vault Ruby Changelog
|
2
2
|
|
3
|
-
## v0.
|
3
|
+
## v0.4.0 (March 31, 2016)
|
4
4
|
|
5
|
+
NEW FEATURES
|
6
|
+
|
7
|
+
- Add LDAP authentication method [GH-61]
|
8
|
+
- Add GitHub authentication method [GH-37]
|
9
|
+
- Add `create_orphan` method [GH-65]
|
10
|
+
- Add `lookup` and `lookup_self` for tokens
|
11
|
+
- Accept `VAULT_SKIP_VERIFY` environment variable [GH-66]
|
12
|
+
|
13
|
+
BUG FIXES
|
5
14
|
|
15
|
+
- Prefer `VAULT_TOKEN` environment variable over disk to mirror Vault's own
|
16
|
+
behavior [GH-98]
|
17
|
+
- Do not duplicate query parameters on HEAD/GET requests [GH-62]
|
18
|
+
- Yield exception in `with_retries` [GH-68]
|
6
19
|
|
7
20
|
## v0.3.0 (February 16, 2016)
|
8
21
|
|
data/README.md
CHANGED
@@ -68,7 +68,7 @@ Vault.configure do |config|
|
|
68
68
|
end
|
69
69
|
```
|
70
70
|
|
71
|
-
If you do not want the Vault singleton,
|
71
|
+
If you do not want the Vault singleton, or if you need to communicate with multiple Vault servers at once, you can create independent client objects:
|
72
72
|
|
73
73
|
```ruby
|
74
74
|
client_1 = Vault::Client.new(address: "https://vault.mycompany.com")
|
data/lib/vault/api/auth.rb
CHANGED
@@ -98,5 +98,45 @@ module Vault
|
|
98
98
|
client.token = secret.auth.client_token
|
99
99
|
return secret
|
100
100
|
end
|
101
|
+
|
102
|
+
# Authenticate via the "ldap" authentication method. If authentication
|
103
|
+
# is successful, the resulting token will be stored on the client and used
|
104
|
+
# for future requests.
|
105
|
+
#
|
106
|
+
# @example
|
107
|
+
# Vault.auth.ldap("sethvargo", "s3kr3t") #=> #<Vault::Secret lease_id="">
|
108
|
+
#
|
109
|
+
# @param [String] username
|
110
|
+
# @param [String] password
|
111
|
+
# @param [Hash] options
|
112
|
+
# additional options to pass to the authentication call, such as a custom
|
113
|
+
# mount point
|
114
|
+
#
|
115
|
+
# @return [Secret]
|
116
|
+
def ldap(username, password, options = {})
|
117
|
+
payload = { password: password }.merge(options)
|
118
|
+
json = client.post("/v1/auth/ldap/login/#{CGI.escape(username)}", JSON.fast_generate(payload))
|
119
|
+
secret = Secret.decode(json)
|
120
|
+
client.token = secret.auth.client_token
|
121
|
+
return secret
|
122
|
+
end
|
123
|
+
|
124
|
+
# Authenticate via the GitHub authentication method. If authentication is
|
125
|
+
# successful, the resulting token will be stored on the client and used
|
126
|
+
# for future requests.
|
127
|
+
#
|
128
|
+
# @example
|
129
|
+
# Vault.auth.github("mypersonalgithubtoken") #=> #<Vault::Secret lease_id="">
|
130
|
+
#
|
131
|
+
# @param [String] github_token
|
132
|
+
#
|
133
|
+
# @return [Secret]
|
134
|
+
def github(github_token)
|
135
|
+
payload = {token: github_token}
|
136
|
+
json = client.post("/v1/auth/github/login", JSON.fast_generate(payload))
|
137
|
+
secret = Secret.decode(json)
|
138
|
+
client.token = secret.auth.client_token
|
139
|
+
return secret
|
140
|
+
end
|
101
141
|
end
|
102
142
|
end
|
data/lib/vault/api/auth_token.rb
CHANGED
@@ -28,6 +28,43 @@ module Vault
|
|
28
28
|
return Secret.decode(json)
|
29
29
|
end
|
30
30
|
|
31
|
+
# Create an orphaned authentication token.
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# Vault.auth_token.create_orphan #=> #<Vault::Secret lease_id="">
|
35
|
+
#
|
36
|
+
# @param [Hash] options
|
37
|
+
#
|
38
|
+
# @return [Secret]
|
39
|
+
def create_orphan(options = {})
|
40
|
+
json = client.post("/v1/auth/token/create-orphan", JSON.fast_generate(options))
|
41
|
+
return Secret.decode(json)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Lookup information about the current token.
|
45
|
+
#
|
46
|
+
# @example
|
47
|
+
# Vault.auth_token.lookup_self("abcd-...") #=> #<Vault::Secret lease_id="">
|
48
|
+
#
|
49
|
+
# @param [String] token
|
50
|
+
#
|
51
|
+
# @return [Secret]
|
52
|
+
def lookup(token)
|
53
|
+
json = client.get("/v1/auth/token/lookup/#{CGI.escape(token)}")
|
54
|
+
return Secret.decode(json)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Lookup information about the given token.
|
58
|
+
#
|
59
|
+
# @example
|
60
|
+
# Vault.auth_token.lookup_self #=> #<Vault::Secret lease_id="">
|
61
|
+
#
|
62
|
+
# @return [Secret]
|
63
|
+
def lookup_self
|
64
|
+
json = client.get("/v1/auth/token/lookup-self")
|
65
|
+
return Secret.decode(json)
|
66
|
+
end
|
67
|
+
|
31
68
|
# Renew the given authentication token.
|
32
69
|
#
|
33
70
|
# @example
|
data/lib/vault/client.rb
CHANGED
@@ -217,6 +217,11 @@ module Vault
|
|
217
217
|
|
218
218
|
case response
|
219
219
|
when Net::HTTPRedirection
|
220
|
+
# On a redirect of a GET or HEAD request, the URL already contains
|
221
|
+
# the data as query string parameters.
|
222
|
+
if [:head, :get].include?(verb)
|
223
|
+
data = {}
|
224
|
+
end
|
220
225
|
request(verb, response[LOCATION_HEADER], data, headers)
|
221
226
|
when Net::HTTPSuccess
|
222
227
|
success(response)
|
@@ -353,7 +358,7 @@ module Vault
|
|
353
358
|
backoff_max = options[:max_wait] || Defaults::RETRY_MAX_WAIT
|
354
359
|
|
355
360
|
begin
|
356
|
-
return yield retries
|
361
|
+
return yield retries, exception
|
357
362
|
rescue *rescued => e
|
358
363
|
exception = e
|
359
364
|
|
data/lib/vault/defaults.rb
CHANGED
@@ -42,11 +42,15 @@ module Vault
|
|
42
42
|
# The vault token to use for authentiation.
|
43
43
|
# @return [String, nil]
|
44
44
|
def token
|
45
|
+
if !ENV["VAULT_TOKEN"].nil?
|
46
|
+
return ENV["VAULT_TOKEN"]
|
47
|
+
end
|
48
|
+
|
45
49
|
if VAULT_DISK_TOKEN.exist? && VAULT_DISK_TOKEN.readable?
|
46
|
-
VAULT_DISK_TOKEN.read
|
47
|
-
else
|
48
|
-
ENV["VAULT_TOKEN"]
|
50
|
+
return VAULT_DISK_TOKEN.read
|
49
51
|
end
|
52
|
+
|
53
|
+
nil
|
50
54
|
end
|
51
55
|
|
52
56
|
# The number of seconds to wait when trying to open a connection before
|
@@ -122,6 +126,11 @@ module Vault
|
|
122
126
|
# Verify SSL requests (default: true)
|
123
127
|
# @return [true, false]
|
124
128
|
def ssl_verify
|
129
|
+
# Vault CLI uses this envvar, so accept it by precedence
|
130
|
+
if !ENV["VAULT_SKIP_VERIFY"].nil?
|
131
|
+
return true
|
132
|
+
end
|
133
|
+
|
125
134
|
if ENV["VAULT_SSL_VERIFY"].nil?
|
126
135
|
true
|
127
136
|
else
|
data/lib/vault/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vault
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Vargo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|