diff --git a/api/secret.go b/api/secret.go index 152c82650e..93d67bf854 100644 --- a/api/secret.go +++ b/api/secret.go @@ -7,10 +7,21 @@ import ( // Secret is the structure returned for every secret within Vault. type Secret struct { - VaultId string `json:"vault_id"` - Renewable bool + VaultId string `json:"vault_id"` + Renewable bool `json":renewable"` LeaseDuration int `json:"lease_duration"` Data map[string]interface{} `json:"data"` + Auth *SecretAuth `json:"auth,omitempty"` +} + +// Auth is the structure containing auth information if we have it. +type SecretAuth struct { + ClientToken string `json:"client_Token"` + Policies []string `json:"policies"` + Metadata map[string]string `json:"metadata"` + + LeaseDuration int `json:"lease_duration"` + Renewable bool `json:"renewable"` } // ParseSecret is used to parse a secret value from JSON from an io.Reader. diff --git a/http/logical.go b/http/logical.go index c242ceff1f..a7b6a92da3 100644 --- a/http/logical.go +++ b/http/logical.go @@ -84,6 +84,7 @@ func handleLogical(core *vault.Core) http.Handler { } // If we have authentication information, then set the cookie + // and setup the result structure. if resp.Auth != nil { expireDuration := 365 * 24 * time.Hour if logicalResp.LeaseDuration != 0 { @@ -97,6 +98,14 @@ func handleLogical(core *vault.Core) http.Handler { Path: "/", Expires: time.Now().UTC().Add(expireDuration), }) + + logicalResp.Auth = &Auth{ + ClientToken: resp.Auth.ClientToken, + Policies: resp.Auth.Policies, + Metadata: resp.Auth.Metadata, + LeaseDuration: int(resp.Auth.Lease.Seconds()), + Renewable: resp.Auth.Renewable, + } } httpResp = logicalResp @@ -112,4 +121,13 @@ type LogicalResponse struct { Renewable bool `json:"renewable"` LeaseDuration int `json:"lease_duration"` Data map[string]interface{} `json:"data"` + Auth *Auth `json:"auth"` +} + +type Auth struct { + ClientToken string `json:"client_Token"` + Policies []string `json:"policies"` + Metadata map[string]string `json:"metadata"` + LeaseDuration int `json:"lease_duration"` + Renewable bool `json:"renewable"` }