gophercloud-wide authentication types.
diff --git a/auth_options.go b/auth_options.go
new file mode 100644
index 0000000..f9e6ee5
--- /dev/null
+++ b/auth_options.go
@@ -0,0 +1,36 @@
+package gophercloud
+
+// AuthOptions lets anyone calling Authenticate() supply the required access credentials.
+// Its fields are the union of those recognized by each identity implementation and provider.
+type AuthOptions struct {
+
+ // IdentityEndpoint specifies the HTTP endpoint offering the Identity API of the appropriate version.
+ // Required by the identity services, but often populated by a provider Client.
+ IdentityEndpoint string
+
+ // Username is required if using Identity V2 API.
+ // Consult with your provider's control panel to discover your account's username.
+ // In Identity V3, either UserID or a combination of Username and DomainID or DomainName.
+ Username, UserID string
+
+ // Exactly one of Password or ApiKey is required for the Identity V2 and V3 APIs.
+ // Consult with your provider's control panel to discover your account's preferred method of authentication.
+ Password, APIKey string
+
+ // At most one of DomainID and DomainName must be provided if using Username with Identity V3.
+ // Otherwise, either are optional.
+ DomainID, DomainName string
+
+ // The TenantID and TenantName fields are optional for the Identity V2 API.
+ // Some providers allow you to specify a TenantName instead of the TenantId.
+ // Some require both. Your provider's authentication policies will determine
+ // how these fields influence authentication.
+ TenantID, TenantName string
+
+ // AllowReauth should be set to true if you grant permission for Gophercloud to
+ // cache your credentials in memory, and to allow Gophercloud to attempt to
+ // re-authenticate automatically if/when your token expires. If you set it to
+ // false, it will not cache these settings, but re-authentication will not be
+ // possible. This setting defaults to false.
+ AllowReauth bool
+}