 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package oauth1 enables management of OpenStack OAuth1 tokens and Authentication.
Example to Create an OAuth1 Consumer
createConsumerOpts := oauth1.CreateConsumerOpts{
	Description: "My consumer",
}
consumer, err := oauth1.CreateConsumer(identityClient, createConsumerOpts).Extract()
if err != nil {
	panic(err)
}
// NOTE: Consumer secret is available only on create response
fmt.Printf("Consumer: %+v\n", consumer)
Example to Request an unauthorized OAuth1 token
requestTokenOpts := oauth1.RequestTokenOpts{
	OAuthConsumerKey:     consumer.ID,
	OAuthConsumerSecret:  consumer.Secret,
	OAuthSignatureMethod: oauth1.HMACSHA1,
	RequestedProjectID:   projectID,
}
requestToken, err := oauth1.RequestToken(identityClient, requestTokenOpts).Extract()
if err != nil {
	panic(err)
}
// NOTE: Request token secret is available only on request response
fmt.Printf("Request token: %+v\n", requestToken)
Example to Authorize an unauthorized OAuth1 token
authorizeTokenOpts := oauth1.AuthorizeTokenOpts{
	Roles: []oauth1.Role{
		{Name: "member"},
	},
}
authToken, err := oauth1.AuthorizeToken(identityClient, requestToken.OAuthToken, authorizeTokenOpts).Extract()
if err != nil {
	panic(err)
}
fmt.Printf("Verifier ID of the unauthorized Token: %+v\n", authToken.OAuthVerifier)
Example to Create an OAuth1 Access Token
accessTokenOpts := oauth1.CreateAccessTokenOpts{
	OAuthConsumerKey:     consumer.ID,
	OAuthConsumerSecret:  consumer.Secret,
	OAuthToken:           requestToken.OAuthToken,
	OAuthTokenSecret:     requestToken.OAuthTokenSecret,
	OAuthVerifier:        authToken.OAuthVerifier,
	OAuthSignatureMethod: oauth1.HMACSHA1,
}
accessToken, err := oauth1.CreateAccessToken(identityClient, accessTokenOpts).Extract()
if err != nil {
	panic(err)
}
// NOTE: Access token secret is available only on create response
fmt.Printf("OAuth1 Access Token: %+v\n", accessToken)
Example to List User's OAuth1 Access Tokens
allPages, err := oauth1.ListAccessTokens(identityClient, userID).AllPages()
if err != nil {
	panic(err)
}
accessTokens, err := oauth1.ExtractAccessTokens(allPages)
if err != nil {
	panic(err)
}
for _, accessToken := range accessTokens {
	fmt.Printf("Access Token: %+v\n", accessToken)
}
Example to Authenticate a client using OAuth1 method
client, err := openstack.NewClient("http://localhost:5000/v3")
if err != nil {
	panic(err)
}
authOptions := &oauth1.AuthOptions{
	// consumer token, created earlier
	OAuthConsumerKey:    consumer.ID,
	OAuthConsumerSecret: consumer.Secret,
	// access token, created earlier
	OAuthToken:           accessToken.OAuthToken,
	OAuthTokenSecret:     accessToken.OAuthTokenSecret,
	OAuthSignatureMethod: oauth1.HMACSHA1,
}
err = openstack.AuthenticateV3(client, authOptions, gophercloud.EndpointOpts{})
if err != nil {
	panic(err)
}
Example to Create a Token using OAuth1 method
var oauth1Token struct {
	tokens.Token
	oauth1.TokenExt
}
createOpts := &oauth1.AuthOptions{
	// consumer token, created earlier
	OAuthConsumerKey:    consumer.ID,
	OAuthConsumerSecret: consumer.Secret,
	// access token, created earlier
	OAuthToken:           accessToken.OAuthToken,
	OAuthTokenSecret:     accessToken.OAuthTokenSecret,
	OAuthSignatureMethod: oauth1.HMACSHA1,
}
err := tokens.Create(identityClient, createOpts).ExtractInto(&oauth1Token)
if err != nil {
	panic(err)
}
Index ¶
- func Create(client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
- func ListAccessTokenRoles(client *gophercloud.ServiceClient, userID string, id string) pagination.Pager
- func ListAccessTokens(client *gophercloud.ServiceClient, userID string) pagination.Pager
- func ListConsumers(client *gophercloud.ServiceClient) pagination.Pager
- type AccessToken
- type AccessTokenRole
- type AccessTokenRolesPage
- type AccessTokensPage
- type AuthOptions
- func (opts AuthOptions) CanReauth() bool
- func (opts AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error)
- func (opts AuthOptions) ToTokenV3HeadersMap(headerOpts map[string]interface{}) (map[string]string, error)
- func (opts AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error)
 
- type AuthorizeTokenOpts
- type AuthorizeTokenOptsBuilder
- type AuthorizeTokenResult
- type AuthorizedToken
- type Consumer
- type ConsumersPage
- type CreateAccessTokenOpts
- type CreateAccessTokenOptsBuilder
- type CreateConsumerOpts
- type CreateConsumerOptsBuilder
- type CreateConsumerResult
- type DeleteConsumerResult
- type GetAccessTokenResult
- type GetAccessTokenRoleResult
- type GetConsumerResult
- type OAuth1
- type RequestTokenOpts
- type RequestTokenOptsBuilder
- type RevokeAccessTokenResult
- type Role
- type SignatureMethod
- type Token
- type TokenExt
- type TokenResult
- type UpdateConsumerOpts
- type UpdateConsumerResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Create ¶
func Create(client *gophercloud.ServiceClient, opts tokens.AuthOptionsBuilder) (r tokens.CreateResult)
Create authenticates and either generates a new OpenStack token from an OAuth1 token.
func ListAccessTokenRoles ¶
func ListAccessTokenRoles(client *gophercloud.ServiceClient, userID string, id string) pagination.Pager
ListAccessTokenRoles enumerates authorized access token roles.
func ListAccessTokens ¶
func ListAccessTokens(client *gophercloud.ServiceClient, userID string) pagination.Pager
ListAccessTokens enumerates authorized access tokens.
func ListConsumers ¶
func ListConsumers(client *gophercloud.ServiceClient) pagination.Pager
List enumerates Consumers.
Types ¶
type AccessToken ¶
type AccessToken struct {
	ID                string     `json:"id"`
	ConsumerID        string     `json:"consumer_id"`
	ProjectID         string     `json:"project_id"`
	AuthorizingUserID string     `json:"authorizing_user_id"`
	ExpiresAt         *time.Time `json:"-"`
}
    AccessToken represents an AccessToken response as a struct.
func ExtractAccessTokens ¶
func ExtractAccessTokens(r pagination.Page) ([]AccessToken, error)
ExtractAccessTokens returns a slice of AccessTokens contained in a single page of results.
func (*AccessToken) UnmarshalJSON ¶
func (r *AccessToken) UnmarshalJSON(b []byte) error
type AccessTokenRole ¶
type AccessTokenRole struct {
	ID       string `json:"id"`
	Name     string `json:"name"`
	DomainID string `json:"domain_id"`
}
    AccessTokenRole represents an Access Token Role struct.
func ExtractAccessTokenRoles ¶
func ExtractAccessTokenRoles(r pagination.Page) ([]AccessTokenRole, error)
ExtractAccessTokenRoles returns a slice of AccessTokenRole contained in a single page of results.
type AccessTokenRolesPage ¶
type AccessTokenRolesPage struct {
	pagination.LinkedPageBase
}
    AccessTokenRolesPage is a single page of Access Token roles results.
func (AccessTokenRolesPage) IsEmpty ¶
func (r AccessTokenRolesPage) IsEmpty() (bool, error)
IsEmpty determines whether or not a an AccessTokensPage contains any results.
func (AccessTokenRolesPage) NextPageURL ¶
func (r AccessTokenRolesPage) NextPageURL() (string, error)
NextPageURL extracts the "next" link from the links section of the result.
type AccessTokensPage ¶
type AccessTokensPage struct {
	pagination.LinkedPageBase
}
    AccessTokensPage is a single page of Access Tokens results.
func (AccessTokensPage) IsEmpty ¶
func (r AccessTokensPage) IsEmpty() (bool, error)
IsEmpty determines whether or not a an AccessTokensPage contains any results.
func (AccessTokensPage) NextPageURL ¶
func (r AccessTokensPage) NextPageURL() (string, error)
NextPageURL extracts the "next" link from the links section of the result.
type AuthOptions ¶
type AuthOptions struct {
	// OAuthConsumerKey is the OAuth1 Consumer Key.
	OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"`
	// OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate
	// an OAuth1 request signature.
	OAuthConsumerSecret string `required:"true"`
	// OAuthToken is the OAuth1 Request Token.
	OAuthToken string `q:"oauth_token" required:"true"`
	// OAuthTokenSecret is the OAuth1 Request Token Secret. Used to generate
	// an OAuth1 request signature.
	OAuthTokenSecret string `required:"true"`
	// OAuthSignatureMethod is the OAuth1 signature method the Consumer used
	// to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT".
	// "PLAINTEXT" is not recommended for production usage.
	OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"`
	// OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix
	// timestamp will be used.
	OAuthTimestamp *time.Time
	// OAuthNonce is an OAuth1 request nonce. Nonce must be a random string,
	// uniquely generated for each request. Will be generated automatically
	// when it is not set.
	OAuthNonce string `q:"oauth_nonce"`
	// AllowReauth allows Gophercloud to re-authenticate automatically
	// if/when your token expires.
	AllowReauth bool
}
    AuthOptions represents options for authenticating a user using OAuth1 tokens.
func (AuthOptions) CanReauth ¶
func (opts AuthOptions) CanReauth() bool
CanReauth allows AuthOptions to satisfy the tokens.AuthOptionsBuilder interface.
func (AuthOptions) ToTokenV3CreateMap ¶
func (opts AuthOptions) ToTokenV3CreateMap(map[string]interface{}) (map[string]interface{}, error)
ToTokenV3CreateMap builds a create request body.
func (AuthOptions) ToTokenV3HeadersMap ¶
func (opts AuthOptions) ToTokenV3HeadersMap(headerOpts map[string]interface{}) (map[string]string, error)
ToTokenV3HeadersMap builds the headers required for an OAuth1-based create request.
func (AuthOptions) ToTokenV3ScopeMap ¶
func (opts AuthOptions) ToTokenV3ScopeMap() (map[string]interface{}, error)
ToTokenV3ScopeMap allows AuthOptions to satisfy the tokens.AuthOptionsBuilder interface.
type AuthorizeTokenOpts ¶
type AuthorizeTokenOpts struct {
	Roles []Role `json:"roles"`
}
    AuthorizeTokenOpts provides options used to authorize a request token.
func (AuthorizeTokenOpts) ToOAuth1AuthorizeTokenMap ¶
func (opts AuthorizeTokenOpts) ToOAuth1AuthorizeTokenMap() (map[string]interface{}, error)
ToOAuth1AuthorizeTokenMap formats an AuthorizeTokenOpts into an authorize token request.
type AuthorizeTokenOptsBuilder ¶
type AuthorizeTokenOptsBuilder interface {
	ToOAuth1AuthorizeTokenMap() (map[string]interface{}, error)
}
    AuthorizeTokenOptsBuilder allows extensions to add additional parameters to the AuthorizeToken request.
type AuthorizeTokenResult ¶
type AuthorizeTokenResult struct {
	gophercloud.Result
}
    func AuthorizeToken ¶
func AuthorizeToken(client *gophercloud.ServiceClient, id string, opts AuthorizeTokenOptsBuilder) (r AuthorizeTokenResult)
AuthorizeToken authorizes an unauthorized consumer token.
func (AuthorizeTokenResult) Extract ¶
func (r AuthorizeTokenResult) Extract() (*AuthorizedToken, error)
Extract interprets AuthorizeTokenResult result as a AuthorizedToken.
type AuthorizedToken ¶
type AuthorizedToken struct {
	// OAuthVerifier is the ID of the token verifier.
	OAuthVerifier string `json:"oauth_verifier"`
}
    AuthorizedToken contains an OAuth1 authorized token info.
type Consumer ¶
type Consumer struct {
	ID          string `json:"id"`
	Secret      string `json:"secret"`
	Description string `json:"description"`
}
    Consumer represents a delegated authorization request between two identities.
func ExtractConsumers ¶
func ExtractConsumers(r pagination.Page) ([]Consumer, error)
ExtractConsumers returns a slice of Consumers contained in a single page of results.
type ConsumersPage ¶
type ConsumersPage struct {
	pagination.LinkedPageBase
}
    ConsumersPage is a single page of Region results.
func (ConsumersPage) IsEmpty ¶
func (c ConsumersPage) IsEmpty() (bool, error)
IsEmpty determines whether or not a page of Consumers contains any results.
func (ConsumersPage) NextPageURL ¶
func (c ConsumersPage) NextPageURL() (string, error)
NextPageURL extracts the "next" link from the links section of the result.
type CreateAccessTokenOpts ¶
type CreateAccessTokenOpts struct {
	// OAuthConsumerKey is the OAuth1 Consumer Key.
	OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"`
	// OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate
	// an OAuth1 request signature.
	OAuthConsumerSecret string `required:"true"`
	// OAuthToken is the OAuth1 Request Token.
	OAuthToken string `q:"oauth_token" required:"true"`
	// OAuthTokenSecret is the OAuth1 Request Token Secret. Used to generate
	// an OAuth1 request signature.
	OAuthTokenSecret string `required:"true"`
	// OAuthVerifier is the OAuth1 verification code.
	OAuthVerifier string `q:"oauth_verifier" required:"true"`
	// OAuthSignatureMethod is the OAuth1 signature method the Consumer used
	// to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT".
	// "PLAINTEXT" is not recommended for production usage.
	OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"`
	// OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix
	// timestamp will be used.
	OAuthTimestamp *time.Time
	// OAuthNonce is an OAuth1 request nonce. Nonce must be a random string,
	// uniquely generated for each request. Will be generated automatically
	// when it is not set.
	OAuthNonce string `q:"oauth_nonce"`
}
    CreateAccessTokenOpts provides options used to create an OAuth1 token.
func (CreateAccessTokenOpts) ToOAuth1CreateAccessTokenHeaders ¶
func (opts CreateAccessTokenOpts) ToOAuth1CreateAccessTokenHeaders(method, u string) (map[string]string, error)
ToOAuth1CreateAccessTokenHeaders formats a CreateAccessTokenOpts into a map of request headers.
type CreateAccessTokenOptsBuilder ¶
type CreateAccessTokenOptsBuilder interface {
	ToOAuth1CreateAccessTokenHeaders(string, string) (map[string]string, error)
}
    CreateAccessTokenOptsBuilder allows extensions to add additional parameters to the CreateAccessToken request.
type CreateConsumerOpts ¶
type CreateConsumerOpts struct {
	// Description is the consumer description.
	Description string `json:"description"`
}
    CreateConsumerOpts provides options used to create a new Consumer.
func (CreateConsumerOpts) ToOAuth1CreateConsumerMap ¶
func (opts CreateConsumerOpts) ToOAuth1CreateConsumerMap() (map[string]interface{}, error)
ToOAuth1CreateConsumerMap formats a CreateConsumerOpts into a create request.
type CreateConsumerOptsBuilder ¶
type CreateConsumerOptsBuilder interface {
	ToOAuth1CreateConsumerMap() (map[string]interface{}, error)
}
    CreateConsumerOptsBuilder allows extensions to add additional parameters to the CreateConsumer request.
type CreateConsumerResult ¶
type CreateConsumerResult struct {
	// contains filtered or unexported fields
}
    CreateConsumerResult is the response from a Create operation. Call its Extract method to interpret it as a Consumer.
func CreateConsumer ¶
func CreateConsumer(client *gophercloud.ServiceClient, opts CreateConsumerOptsBuilder) (r CreateConsumerResult)
Create creates a new Consumer.
type DeleteConsumerResult ¶
type DeleteConsumerResult struct {
	gophercloud.ErrResult
}
    DeleteConsumerResult is the response from a Delete operation. Call its ExtractErr to determine if the request succeeded or failed.
func DeleteConsumer ¶
func DeleteConsumer(client *gophercloud.ServiceClient, id string) (r DeleteConsumerResult)
Delete deletes a Consumer.
type GetAccessTokenResult ¶
type GetAccessTokenResult struct {
	gophercloud.Result
}
    func GetAccessToken ¶
func GetAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r GetAccessTokenResult)
GetAccessToken retrieves details on a single OAuth1 access token by an ID.
func (GetAccessTokenResult) Extract ¶
func (r GetAccessTokenResult) Extract() (*AccessToken, error)
Extract interprets any GetAccessTokenResult result as an AccessToken.
type GetAccessTokenRoleResult ¶
type GetAccessTokenRoleResult struct {
	gophercloud.Result
}
    func GetAccessTokenRole ¶
func GetAccessTokenRole(client *gophercloud.ServiceClient, userID string, id string, roleID string) (r GetAccessTokenRoleResult)
GetAccessTokenRole retrieves details on a single OAuth1 access token role by an ID.
func (GetAccessTokenRoleResult) Extract ¶
func (r GetAccessTokenRoleResult) Extract() (*AccessTokenRole, error)
Extract interprets any GetAccessTokenRoleResult result as an AccessTokenRole.
type GetConsumerResult ¶
type GetConsumerResult struct {
	// contains filtered or unexported fields
}
    GetConsumerResult is the response from a Get operation. Call its Extract method to interpret it as a Consumer.
func GetConsumer ¶
func GetConsumer(client *gophercloud.ServiceClient, id string) (r GetConsumerResult)
GetConsumer retrieves details on a single Consumer by ID.
type OAuth1 ¶
type OAuth1 struct {
	AccessTokenID string `json:"access_token_id"`
	ConsumerID    string `json:"consumer_id"`
}
    OAuth1 is an OAuth1 object, returned in OAuth1 token result.
type RequestTokenOpts ¶
type RequestTokenOpts struct {
	// OAuthConsumerKey is the OAuth1 Consumer Key.
	OAuthConsumerKey string `q:"oauth_consumer_key" required:"true"`
	// OAuthConsumerSecret is the OAuth1 Consumer Secret. Used to generate
	// an OAuth1 request signature.
	OAuthConsumerSecret string `required:"true"`
	// OAuthSignatureMethod is the OAuth1 signature method the Consumer used
	// to sign the request. Supported values are "HMAC-SHA1" or "PLAINTEXT".
	// "PLAINTEXT" is not recommended for production usage.
	OAuthSignatureMethod SignatureMethod `q:"oauth_signature_method" required:"true"`
	// OAuthTimestamp is an OAuth1 request timestamp. If nil, current Unix
	// timestamp will be used.
	OAuthTimestamp *time.Time
	// OAuthNonce is an OAuth1 request nonce. Nonce must be a random string,
	// uniquely generated for each request. Will be generated automatically
	// when it is not set.
	OAuthNonce string `q:"oauth_nonce"`
	// RequestedProjectID is a Project ID a consumer user requested an
	// access to.
	RequestedProjectID string `h:"Requested-Project-Id"`
}
    RequestTokenOpts provides options used to get a consumer unauthorized request token.
func (RequestTokenOpts) ToOAuth1RequestTokenHeaders ¶
func (opts RequestTokenOpts) ToOAuth1RequestTokenHeaders(method, u string) (map[string]string, error)
ToOAuth1RequestTokenHeaders formats a RequestTokenOpts into a map of request headers.
type RequestTokenOptsBuilder ¶
type RequestTokenOptsBuilder interface {
	ToOAuth1RequestTokenHeaders(string, string) (map[string]string, error)
}
    RequestTokenOptsBuilder allows extensions to add additional parameters to the RequestToken request.
type RevokeAccessTokenResult ¶
type RevokeAccessTokenResult struct {
	gophercloud.ErrResult
}
    RevokeAccessTokenResult is the response from a Delete operation. Call its ExtractErr to determine if the request succeeded or failed.
func RevokeAccessToken ¶
func RevokeAccessToken(client *gophercloud.ServiceClient, userID string, id string) (r RevokeAccessTokenResult)
RevokeAccessToken revokes an OAuth1 access token.
type SignatureMethod ¶
type SignatureMethod string
Type SignatureMethod is a OAuth1 SignatureMethod type.
const ( // HMACSHA1 is a recommended OAuth1 signature method. HMACSHA1 SignatureMethod = "HMAC-SHA1" // PLAINTEXT signature method is not recommended to be used in // production environment. PLAINTEXT SignatureMethod = "PLAINTEXT" // OAuth1TokenContentType is a supported content type for an OAuth1 // token. OAuth1TokenContentType = "application/x-www-form-urlencoded" )
type Token ¶
type Token struct {
	// OAuthToken is the key value for the oauth token that the Identity API returns.
	OAuthToken string `q:"oauth_token"`
	// OAuthTokenSecret is the secret value associated with the OAuth Token.
	OAuthTokenSecret string `q:"oauth_token_secret"`
	// OAuthExpiresAt is the date and time when an OAuth token expires.
	OAuthExpiresAt *time.Time `q:"-"`
}
    Token contains an OAuth1 token.
type TokenExt ¶
type TokenExt struct {
	OAuth1 OAuth1 `json:"OS-OAUTH1"`
}
    TokenExt represents an extension of the base token result.
type TokenResult ¶
type TokenResult struct {
	gophercloud.Result
	Body []byte
}
    TokenResult is a struct to handle "Content-Type: application/x-www-form-urlencoded" response.
func CreateAccessToken ¶
func CreateAccessToken(client *gophercloud.ServiceClient, opts CreateAccessTokenOptsBuilder) (r TokenResult)
CreateAccessToken creates a new OAuth1 Access Token
func RequestToken ¶
func RequestToken(client *gophercloud.ServiceClient, opts RequestTokenOptsBuilder) (r TokenResult)
RequestToken requests an unauthorized OAuth1 Token.
func (TokenResult) Extract ¶
func (r TokenResult) Extract() (*Token, error)
Extract interprets any OAuth1 token result as a Token.
type UpdateConsumerOpts ¶
type UpdateConsumerOpts struct {
	// Description is the consumer description.
	Description string `json:"description"`
}
    UpdateConsumerOpts provides options used to update a consumer.
func (UpdateConsumerOpts) ToOAuth1UpdateConsumerMap ¶
func (opts UpdateConsumerOpts) ToOAuth1UpdateConsumerMap() (map[string]interface{}, error)
ToOAuth1UpdateConsumerMap formats an UpdateConsumerOpts into a consumer update request.
type UpdateConsumerResult ¶
type UpdateConsumerResult struct {
	// contains filtered or unexported fields
}
    UpdateConsumerResult is the response from a Create operation. Call its Extract method to interpret it as a Consumer.
func UpdateConsumer ¶
func UpdateConsumer(client *gophercloud.ServiceClient, id string, opts UpdateConsumerOpts) (r UpdateConsumerResult)
UpdateConsumer updates an existing Consumer.