Documentation ¶
Overview ¶
Package tokens provides information and interaction with the EC2 token API resource for the OpenStack Identity service.
For more information, see: https://docs.openstack.org/api-ref/identity/v2-ext/
Example to Create a Token From an EC2 access and secret keys
var authOptions tokens.AuthOptionsBuilder authOptions = &ec2tokens.AuthOptions{ Access: "a7f1e798b7c2417cba4a02de97dc3cdc", Secret: "18f4f6761ada4e3795fa5273c30349b9", } token, err := ec2tokens.Create(identityClient, authOptions).ExtractToken() if err != nil { panic(err) }
Example to auth a client using EC2 access and secret keys
client, err := openstack.NewClient("http://localhost:5000/v3") if err != nil { panic(err) } var authOptions tokens.AuthOptionsBuilder authOptions = &ec2tokens.AuthOptions{ Access: "a7f1e798b7c2417cba4a02de97dc3cdc", Secret: "18f4f6761ada4e3795fa5273c30349b9", AllowReauth: true, } err = openstack.AuthenticateV3(client, authOptions, gophercloud.EndpointOpts{}) if err != nil { panic(err) }
Index ¶
- Constants
- func Create(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
- func EC2CredentialsBuildAuthorizationHeaderV4(opts AuthOptions, signedHeaders string, signature string, date time.Time) string
- func EC2CredentialsBuildCanonicalHeadersV4(headers map[string]string, signedHeaders string) string
- func EC2CredentialsBuildCanonicalQueryStringV2(params map[string]string) string
- func EC2CredentialsBuildCanonicalQueryStringV4(verb string, params map[string]string) string
- func EC2CredentialsBuildSignatureKeyV4(secret, region, service string, date time.Time) []byte
- func EC2CredentialsBuildSignatureV4(key []byte, stringToSign []byte) string
- func EC2CredentialsBuildStringToSignV2(opts AuthOptions) []byte
- func EC2CredentialsBuildStringToSignV4(opts AuthOptions, signedHeaders string, bodyHash string, date time.Time) []byte
- func ValidateS3Token(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
- type AuthOptions
- func (opts *AuthOptions) CanReauth() bool
- func (opts *AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error)
- func (opts *AuthOptions) ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error)
- func (opts *AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error)
Constants ¶
const ( // EC2CredentialsAwsRequestV4 is a constant, used to generate AWS // Credential V4. EC2CredentialsAwsRequestV4 = "aws4_request" // EC2CredentialsHmacSha1V2 is a HMAC SHA1 signature method. Used to // generate AWS Credential V2. EC2CredentialsHmacSha1V2 = "HmacSHA1" // EC2CredentialsHmacSha256V2 is a HMAC SHA256 signature method. Used // to generate AWS Credential V2. EC2CredentialsHmacSha256V2 = "HmacSHA256" // EC2CredentialsAwsHmacV4 is an AWS signature V4 signing method. // More details: // https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html EC2CredentialsAwsHmacV4 = "AWS4-HMAC-SHA256" // EC2CredentialsTimestampFormatV4 is an AWS signature V4 timestamp // format. EC2CredentialsTimestampFormatV4 = "20060102T150405Z" // EC2CredentialsDateFormatV4 is an AWS signature V4 date format. EC2CredentialsDateFormatV4 = "20060102" )
Variables ¶
This section is empty.
Functions ¶
func Create ¶
func Create(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
Create authenticates and either generates a new token from EC2 credentials
func EC2CredentialsBuildAuthorizationHeaderV4 ¶
func EC2CredentialsBuildAuthorizationHeaderV4(opts AuthOptions, signedHeaders string, signature string, date time.Time) string
EC2CredentialsBuildAuthorizationHeaderV4 builds an AWS v4 Authorization header based on auth parameters, date and signature
func EC2CredentialsBuildCanonicalHeadersV4 ¶
EC2CredentialsBuildCanonicalHeadersV4 builds a canonical string based on "headers" map and "signedHeaders" string parameters. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L216
func EC2CredentialsBuildCanonicalQueryStringV2 ¶
EC2CredentialsBuildCanonicalQueryStringV2 builds a canonical query string for an AWS signature V2. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L133
func EC2CredentialsBuildCanonicalQueryStringV4 ¶
EC2CredentialsBuildCanonicalQueryStringV2 builds a canonical query string for an AWS signature V4. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L244
func EC2CredentialsBuildSignatureKeyV4 ¶
EC2CredentialsBuildSignatureKeyV4 builds a HMAC 256 signature key based on input parameters. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L169
func EC2CredentialsBuildSignatureV4 ¶
EC2CredentialsBuildSignatureV4 builds an AWS v4 signature based on input parameters. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L285..L286
func EC2CredentialsBuildStringToSignV2 ¶
func EC2CredentialsBuildStringToSignV2(opts AuthOptions) []byte
EC2CredentialsBuildStringToSignV2 builds a string to sign an AWS signature V2. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L148
func EC2CredentialsBuildStringToSignV4 ¶
func EC2CredentialsBuildStringToSignV4(opts AuthOptions, signedHeaders string, bodyHash string, date time.Time) []byte
EC2CredentialsBuildStringToSignV4 builds an AWS v4 signature string to sign based on input parameters. https://github.com/openstack/python-keystoneclient/blob/stable/train/keystoneclient/contrib/ec2/utils.py#L251
func ValidateS3Token ¶
func ValidateS3Token(c *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
ValidateS3Token authenticates an S3 request using EC2 credentials. Doesn't generate a new token ID, but returns a tokens.CreateResult.
Types ¶
type AuthOptions ¶
type AuthOptions struct { // Access is the EC2 Credential Access ID. Access string `json:"access" required:"true"` // Secret is the EC2 Credential Secret, used to calculate signature. // Not used, when a Signature is is. Secret string `json:"-"` // Host is a HTTP request Host header. Used to calculate an AWS // signature V2. For signature V4 set the Host inside Headers map. // Optional. Host string `json:"host"` // Path is a HTTP request path. Optional. Path string `json:"path"` // Verb is a HTTP request method. Optional. Verb string `json:"verb"` // Headers is a map of HTTP request headers. Optional. Headers map[string]string `json:"headers"` // Region is a region name to calculate an AWS signature V4. Optional. Region string `json:"-"` // Service is a service name to calculate an AWS signature V4. Optional. Service string `json:"-"` // Params is a map of GET method parameters. Optional. Params map[string]string `json:"params"` // AllowReauth allows Gophercloud to re-authenticate automatically // if/when your token expires. AllowReauth bool `json:"-"` // Signature can be either a []byte (encoded to base64 automatically) or // a string. You can set the singature explicitly, when you already know // it. In this case default Params won't be automatically set. Optional. Signature interface{} `json:"signature"` // BodyHash is a HTTP request body sha256 hash. When nil and Signature // is not set, a random hash is generated. Optional. BodyHash *string `json:"body_hash"` // Timestamp is a timestamp to calculate a V4 signature. Optional. Timestamp *time.Time `json:"-"` // Token is a []byte string (encoded to base64 automatically) which was // signed by an EC2 secret key. Used by S3 tokens for validation only. // Token must be set with a Signature. If a Signature is not provided, // a Token will be generated automatically along with a Signature. Token []byte `json:"token,omitempty"` }
AuthOptions represents options for authenticating a user using EC2 credentials.
func (*AuthOptions) CanReauth ¶
func (opts *AuthOptions) CanReauth() bool
CanReauth is a method method to satisfy tokens.AuthOptionsBuilder interface
func (*AuthOptions) ToTokenV3CreateMap ¶
func (opts *AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error)
ToTokenV3CreateMap formats an AuthOptions into a create request.
func (*AuthOptions) ToTokenV3HeadersMap ¶
func (opts *AuthOptions) ToTokenV3HeadersMap(map[string]interface{}) (map[string]string, error)
ToTokenV3HeadersMap allows AuthOptions to satisfy the AuthOptionsBuilder interface in the v3 tokens package.
func (*AuthOptions) ToTokenV3ScopeMap ¶
func (opts *AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error)
ToTokenV3ScopeMap is a dummy method to satisfy tokens.AuthOptionsBuilder interface.