2015-03-30 21:23:32 +00:00
|
|
|
package logical
|
|
|
|
|
2016-05-30 18:30:01 +00:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
)
|
2015-04-01 22:08:43 +00:00
|
|
|
|
2015-03-30 21:23:32 +00:00
|
|
|
// Auth is the resulting authentication information that is part of
|
|
|
|
// Response for credential backends.
|
|
|
|
type Auth struct {
|
2015-04-09 19:14:04 +00:00
|
|
|
LeaseOptions
|
2015-03-31 03:26:39 +00:00
|
|
|
|
2015-05-09 18:39:54 +00:00
|
|
|
// InternalData is JSON-encodable data that is stored with the auth struct.
|
|
|
|
// This will be sent back during a Renew/Revoke for storing internal data
|
|
|
|
// used for those operations.
|
2016-05-30 18:30:01 +00:00
|
|
|
InternalData map[string]interface{} `json:"internal_data" mapstructure:"internal_data" structs:"internal_data"`
|
2015-05-09 18:39:54 +00:00
|
|
|
|
2015-04-15 20:56:42 +00:00
|
|
|
// DisplayName is a non-security sensitive identifier that is
|
|
|
|
// applicable to this Auth. It is used for logging and prefixing
|
|
|
|
// of dynamic secrets. For example, DisplayName may be "armon" for
|
|
|
|
// the github credential backend. If the client token is used to
|
|
|
|
// generate a SQL credential, the user may be "github-armon-uuid".
|
|
|
|
// This is to help identify the source without using audit tables.
|
2016-05-30 18:30:01 +00:00
|
|
|
DisplayName string `json:"display_name" mapstructure:"display_name" structs:"display_name"`
|
2015-04-15 20:56:42 +00:00
|
|
|
|
2015-03-30 21:23:32 +00:00
|
|
|
// Policies is the list of policies that the authenticated user
|
|
|
|
// is associated with.
|
2016-05-30 18:30:01 +00:00
|
|
|
Policies []string `json:"policies" mapstructure:"policies" structs:"policies"`
|
2015-03-30 21:23:32 +00:00
|
|
|
|
|
|
|
// Metadata is used to attach arbitrary string-type metadata to
|
|
|
|
// an authenticated user. This metadata will be outputted into the
|
|
|
|
// audit log.
|
2016-05-30 18:30:01 +00:00
|
|
|
Metadata map[string]string `json:"metadata" mapstructure:"metadata" structs:"metadata"`
|
2015-04-03 00:25:22 +00:00
|
|
|
|
2015-04-09 19:14:04 +00:00
|
|
|
// ClientToken is the token that is generated for the authentication.
|
|
|
|
// This will be filled in by Vault core when an auth structure is
|
|
|
|
// returned. Setting this manually will have no effect.
|
2016-05-30 18:30:01 +00:00
|
|
|
ClientToken string `json:"client_token" mapstructure:"client_token" structs:"client_token"`
|
2016-03-08 17:51:38 +00:00
|
|
|
|
2016-03-09 11:23:31 +00:00
|
|
|
// Accessor is the identifier for the ClientToken. This can be used
|
2016-03-08 17:51:38 +00:00
|
|
|
// to perform management functionalities (especially revocation) when
|
2016-03-09 11:23:31 +00:00
|
|
|
// ClientToken in the audit logs are obfuscated. Accessor can be used
|
2016-03-08 17:51:38 +00:00
|
|
|
// to revoke a ClientToken and to lookup the capabilities of the ClientToken,
|
2016-03-09 03:27:24 +00:00
|
|
|
// both without actually knowing the ClientToken.
|
2016-05-30 18:30:01 +00:00
|
|
|
Accessor string `json:"accessor" mapstructure:"accessor" structs:"accessor"`
|
|
|
|
|
|
|
|
// Period indicates that the token generated using this Auth object
|
|
|
|
// should never expire. The token should be renewed within the duration
|
|
|
|
// specified by this period.
|
|
|
|
Period time.Duration `json:"period" mapstructure:"period" structs:"period"`
|
2017-03-03 14:31:20 +00:00
|
|
|
|
|
|
|
// Number of allowed uses of the issued token
|
|
|
|
NumUses int `json:"num_uses" mapstructure:"num_uses" structs:"num_uses"`
|
2015-03-30 21:23:32 +00:00
|
|
|
}
|
2015-04-01 22:08:43 +00:00
|
|
|
|
|
|
|
func (a *Auth) GoString() string {
|
|
|
|
return fmt.Sprintf("*%#v", *a)
|
|
|
|
}
|