Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion pkg/server/plugin/upstreamauthority/vault/vault_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ func (c *ClientConfig) NewAuthenticatedClient(method AuthMethod) (client *Client
if sec == nil {
return nil, false, errors.New("lookup self response is nil")
}
client.SetToken(c.clientParams.Token)
case CERT:
path := fmt.Sprintf("auth/%v/login", c.clientParams.CertAuthMountPoint)
sec, err = client.Auth(path, map[string]interface{}{
Expand Down Expand Up @@ -306,6 +305,11 @@ func (c *Client) Auth(path string, body map[string]interface{}) (*vapi.Secret, e
}

func (c *Client) LookupSelf(token string) (*vapi.Secret, error) {
if token == "" {
return nil, errors.New("token is empty")
}
c.SetToken(token)

secret, err := c.vaultClient.Logical().Read("auth/token/lookup-self")
if err != nil {
return nil, fmt.Errorf("token lookup failed: %v", err)
Expand Down
31 changes: 24 additions & 7 deletions pkg/server/plugin/upstreamauthority/vault/vault_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,30 +163,44 @@ func (vcs *VaultClientSuite) Test_NewAuthenticatedClient_TokenAuth() {
vcs.fakeVaultServer.LookupSelfResponseCode = 200
for _, c := range []struct {
name string
token string
response []byte
reusable bool
namespace string
err string
}{
{
name: "Token Authentication success / Token never expire",
token: "test-token",
response: []byte(testLookupSelfResponseNeverExpire),
reusable: true,
},
{
name: "Token Authentication success / Token is renewable",
token: "test-token",
response: []byte(testLookupSelfResponse),
reusable: true,
},
{
name: "Token Authentication success / Token is not renewable",
token: "test-token",
response: []byte(testLookupSelfResponseNotRenewable),
},
{
name: "Token Authentication success / Token is renewable / Namespace is given",
token: "test-token",
response: []byte(testCertAuthResponse),
reusable: true,
namespace: "test-ns",
},
{
name: "Token Authentication error / Token is empty",
token: "",
response: []byte(testCertAuthResponse),
reusable: true,
namespace: "test-ns",
err: "token is empty",
},
} {
c := c
vcs.Run(c.name, func() {
Expand All @@ -202,18 +216,21 @@ func (vcs *VaultClientSuite) Test_NewAuthenticatedClient_TokenAuth() {
VaultAddr: fmt.Sprintf("https://%v/", addr),
Namespace: c.namespace,
CACertPath: testRootCert,
Token: "test-token",
Token: c.token,
}
cc, err := NewClientConfig(cp, hclog.Default())
vcs.Require().NoError(err)

client, reusable, err := cc.NewAuthenticatedClient(TOKEN)
vcs.Require().NoError(err)
vcs.Require().Equal(c.reusable, reusable)

if cp.Namespace != "" {
headers := client.vaultClient.Headers()
vcs.Require().Equal(cp.Namespace, headers.Get(consts.NamespaceHeaderName))
if c.err != "" {
vcs.Require().Equal(err.Error(), c.err)
} else {
vcs.Require().NoError(err)
vcs.Require().Equal(c.reusable, reusable)
if cp.Namespace != "" {
headers := client.vaultClient.Headers()
vcs.Require().Equal(cp.Namespace, headers.Get(consts.NamespaceHeaderName))
}
}
})
}
Expand Down