mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-03 20:17:59 +00:00 
			
		
		
		
	Introduced AccessorID in TokenEntry and returning it along with token
This commit is contained in:
		@@ -28,6 +28,7 @@ type Secret struct {
 | 
				
			|||||||
// SecretAuth is the structure containing auth information if we have it.
 | 
					// SecretAuth is the structure containing auth information if we have it.
 | 
				
			||||||
type SecretAuth struct {
 | 
					type SecretAuth struct {
 | 
				
			||||||
	ClientToken string            `json:"client_token"`
 | 
						ClientToken string            `json:"client_token"`
 | 
				
			||||||
 | 
						AccessorID  string            `json:"accessor_id"`
 | 
				
			||||||
	Policies    []string          `json:"policies"`
 | 
						Policies    []string          `json:"policies"`
 | 
				
			||||||
	Metadata    map[string]string `json:"metadata"`
 | 
						Metadata    map[string]string `json:"metadata"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -143,6 +143,7 @@ func (t TableFormatter) OutputSecret(ui cli.Ui, secret, s *api.Secret) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if s.Auth != nil {
 | 
						if s.Auth != nil {
 | 
				
			||||||
		input = append(input, fmt.Sprintf("token %s %s", config.Delim, s.Auth.ClientToken))
 | 
							input = append(input, fmt.Sprintf("token %s %s", config.Delim, s.Auth.ClientToken))
 | 
				
			||||||
 | 
							input = append(input, fmt.Sprintf("token_accessor %s %s", config.Delim, s.Auth.AccessorID))
 | 
				
			||||||
		input = append(input, fmt.Sprintf("token_duration %s %d", config.Delim, s.Auth.LeaseDuration))
 | 
							input = append(input, fmt.Sprintf("token_duration %s %d", config.Delim, s.Auth.LeaseDuration))
 | 
				
			||||||
		input = append(input, fmt.Sprintf("token_renewable %s %v", config.Delim, s.Auth.Renewable))
 | 
							input = append(input, fmt.Sprintf("token_renewable %s %v", config.Delim, s.Auth.Renewable))
 | 
				
			||||||
		input = append(input, fmt.Sprintf("token_policies %s %v", config.Delim, s.Auth.Policies))
 | 
							input = append(input, fmt.Sprintf("token_policies %s %v", config.Delim, s.Auth.Policies))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -124,6 +124,7 @@ func respondLogical(w http.ResponseWriter, r *http.Request, path string, dataOnl
 | 
				
			|||||||
		if resp.Auth != nil {
 | 
							if resp.Auth != nil {
 | 
				
			||||||
			logicalResp.Auth = &Auth{
 | 
								logicalResp.Auth = &Auth{
 | 
				
			||||||
				ClientToken:   resp.Auth.ClientToken,
 | 
									ClientToken:   resp.Auth.ClientToken,
 | 
				
			||||||
 | 
									AccessorID:    resp.Auth.AccessorID,
 | 
				
			||||||
				Policies:      resp.Auth.Policies,
 | 
									Policies:      resp.Auth.Policies,
 | 
				
			||||||
				Metadata:      resp.Auth.Metadata,
 | 
									Metadata:      resp.Auth.Metadata,
 | 
				
			||||||
				LeaseDuration: int(resp.Auth.TTL.Seconds()),
 | 
									LeaseDuration: int(resp.Auth.TTL.Seconds()),
 | 
				
			||||||
@@ -218,6 +219,7 @@ type LogicalResponse struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type Auth struct {
 | 
					type Auth struct {
 | 
				
			||||||
	ClientToken   string            `json:"client_token"`
 | 
						ClientToken   string            `json:"client_token"`
 | 
				
			||||||
 | 
						AccessorID    string            `json:"accessor_id"`
 | 
				
			||||||
	Policies      []string          `json:"policies"`
 | 
						Policies      []string          `json:"policies"`
 | 
				
			||||||
	Metadata      map[string]string `json:"metadata"`
 | 
						Metadata      map[string]string `json:"metadata"`
 | 
				
			||||||
	LeaseDuration int               `json:"lease_duration"`
 | 
						LeaseDuration int               `json:"lease_duration"`
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,13 @@ type Auth struct {
 | 
				
			|||||||
	// This will be filled in by Vault core when an auth structure is
 | 
						// This will be filled in by Vault core when an auth structure is
 | 
				
			||||||
	// returned. Setting this manually will have no effect.
 | 
						// returned. Setting this manually will have no effect.
 | 
				
			||||||
	ClientToken string
 | 
						ClientToken string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// AccessorID is the identifier for the ClientToken. This can be used
 | 
				
			||||||
 | 
						// to perform management functionalities (especially revocation) when
 | 
				
			||||||
 | 
						// ClientToken in the audit logs are obfuscated. AccessorID can be used
 | 
				
			||||||
 | 
						// to revoke a ClientToken and to lookup the capabilities of the ClientToken,
 | 
				
			||||||
 | 
						// all without actually knowing the ClientToken.
 | 
				
			||||||
 | 
						AccessorID string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (a *Auth) GoString() string {
 | 
					func (a *Auth) GoString() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -264,6 +264,7 @@ func NewTokenStore(c *Core, config *logical.BackendConfig) (*TokenStore, error)
 | 
				
			|||||||
// TokenEntry is used to represent a given token
 | 
					// TokenEntry is used to represent a given token
 | 
				
			||||||
type TokenEntry struct {
 | 
					type TokenEntry struct {
 | 
				
			||||||
	ID           string            // ID of this entry, generally a random UUID
 | 
						ID           string            // ID of this entry, generally a random UUID
 | 
				
			||||||
 | 
						AccessorID   string            // Accessor ID for this token, a random UUID
 | 
				
			||||||
	Parent       string            // Parent token, used for revocation trees
 | 
						Parent       string            // Parent token, used for revocation trees
 | 
				
			||||||
	Policies     []string          // Which named policies should be used
 | 
						Policies     []string          // Which named policies should be used
 | 
				
			||||||
	Path         string            // Used for audit trails, this is something like "auth/user/login"
 | 
						Path         string            // Used for audit trails, this is something like "auth/user/login"
 | 
				
			||||||
@@ -300,6 +301,19 @@ func (ts *TokenStore) rootToken() (*TokenEntry, error) {
 | 
				
			|||||||
	return te, nil
 | 
						return te, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CreateAccessorID is used to create an identifier for the token ID.
 | 
				
			||||||
 | 
					func (ts *TokenStore) createAccessorID(entry *TokenEntry) error {
 | 
				
			||||||
 | 
						defer metrics.MeasureSince([]string{"token", "createAccessorID"}, time.Now())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create a random accessor ID
 | 
				
			||||||
 | 
						accessorUUID, err := uuid.GenerateUUID()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						entry.AccessorID = accessorUUID
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create is used to create a new token entry. The entry is assigned
 | 
					// Create is used to create a new token entry. The entry is assigned
 | 
				
			||||||
// a newly generated ID if not provided.
 | 
					// a newly generated ID if not provided.
 | 
				
			||||||
func (ts *TokenStore) create(entry *TokenEntry) error {
 | 
					func (ts *TokenStore) create(entry *TokenEntry) error {
 | 
				
			||||||
@@ -313,6 +327,11 @@ func (ts *TokenStore) create(entry *TokenEntry) error {
 | 
				
			|||||||
		entry.ID = entryUUID
 | 
							entry.ID = entryUUID
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := ts.createAccessorID(entry)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return ts.storeCommon(entry, true)
 | 
						return ts.storeCommon(entry, true)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -705,6 +724,7 @@ func (ts *TokenStore) handleCreateCommon(
 | 
				
			|||||||
				Renewable: true,
 | 
									Renewable: true,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			ClientToken: te.ID,
 | 
								ClientToken: te.ID,
 | 
				
			||||||
 | 
								AccessorID:  te.AccessorID,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user