diff --git a/openstack/identity/v3/tokens/requests.go b/openstack/identity/v3/tokens/requests.go
index 1790df5..955db87 100644
--- a/openstack/identity/v3/tokens/requests.go
+++ b/openstack/identity/v3/tokens/requests.go
@@ -17,7 +17,7 @@
 func Create(c *gophercloud.ServiceClient, scope *Scope) (gophercloud.AuthResults, error) {
 	type domainReq struct {
 		ID   *string `json:"id,omitempty"`
-		Name *string `json:"id,omitempty"`
+		Name *string `json:"name,omitempty"`
 	}
 
 	type projectReq struct {
diff --git a/openstack/identity/v3/tokens/requests_test.go b/openstack/identity/v3/tokens/requests_test.go
index bbe1448..64d6dbb 100644
--- a/openstack/identity/v3/tokens/requests_test.go
+++ b/openstack/identity/v3/tokens/requests_test.go
@@ -9,38 +9,63 @@
 	"github.com/rackspace/gophercloud/testhelper"
 )
 
-func TestCreateUserIDAndPassword(t *testing.T) {
+// authTokenPost verifies that providing certain AuthOptions and Scope results in an expected JSON structure.
+func authTokenPost(t *testing.T, options gophercloud.AuthOptions, scope *Scope, requestJSON string) {
 	setup()
 	defer teardown()
 
 	client := gophercloud.ServiceClient{
 		Endpoint: endpoint(),
-		Options:  gophercloud.AuthOptions{UserID: "me", Password: "squirrel!"},
+		Options:  options,
 	}
 
 	mux.HandleFunc("/auth/tokens", func(w http.ResponseWriter, r *http.Request) {
 		testhelper.TestMethod(t, r, "POST")
 		testhelper.TestHeader(t, r, "Content-Type", "application/json")
 		testhelper.TestHeader(t, r, "Accept", "application/json")
-
-		testhelper.TestJSONRequest(t, r, `
-			{
-				"auth": {
-					"identity": {
-						"methods": ["password"],
-						"password": {
-							"user": { "id": "me", "password": "squirrel!" }
-						}
-					}
-				}
-			}
-		`)
+		testhelper.TestJSONRequest(t, r, requestJSON)
 
 		fmt.Fprintf(w, `{}`)
 	})
 
-	_, err := Create(&client, nil)
+	_, err := Create(&client, scope)
 	if err != nil {
 		t.Errorf("Create returned an error: %v", err)
 	}
 }
+
+func TestCreateUserIDAndPassword(t *testing.T) {
+	authTokenPost(t, gophercloud.AuthOptions{UserID: "me", Password: "squirrel!"}, nil, `
+		{
+			"auth": {
+				"identity": {
+					"methods": ["password"],
+					"password": {
+						"user": { "id": "me", "password": "squirrel!" }
+					}
+				}
+			}
+		}
+	`)
+}
+
+func TestCreateUsernameDomainIDPassword(t *testing.T) {
+	authTokenPost(t, gophercloud.AuthOptions{Username: "fakey", Password: "notpassword", DomainID: "abc123"}, nil, `
+		{
+			"auth": {
+				"identity": {
+					"methods": ["password"],
+					"password": {
+						"user": {
+							"domain": {
+								"id": "abc123"
+							},
+							"name": "fakey",
+							"password": "notpassword"
+						}
+					}
+				}
+			}
+		}
+	`)
+}
