Browse Source

Merge pull request #6077 from gyuho/auth-guest

v2http: use guest access in non-TLS mode
Gyu-Ho Lee 9 years ago
parent
commit
9836990aa7
2 changed files with 34 additions and 3 deletions
  1. 4 3
      etcdserver/api/v2http/client_auth.go
  2. 30 0
      etcdserver/api/v2http/client_auth_test.go

+ 4 - 3
etcdserver/api/v2http/client_auth.go

@@ -116,10 +116,11 @@ func hasKeyPrefixAccess(sec auth.Store, r *http.Request, key string, recursive,
 	}
 	}
 
 
 	var user *auth.User
 	var user *auth.User
-	if r.Header.Get("Authorization") == "" && clientCertAuthEnabled {
-		user = userFromClientCertificate(sec, r)
+	if r.Header.Get("Authorization") == "" {
+		if clientCertAuthEnabled {
+			user = userFromClientCertificate(sec, r)
+		}
 		if user == nil {
 		if user == nil {
-			plog.Warningf("auth: no authorization provided, checking guest access")
 			return hasGuestAccess(sec, r, key)
 			return hasGuestAccess(sec, r, key)
 		}
 		}
 	} else {
 	} else {

+ 30 - 0
etcdserver/api/v2http/client_auth_test.go

@@ -717,6 +717,36 @@ func TestPrefixAccess(t *testing.T) {
 			hasKeyPrefixAccess: false,
 			hasKeyPrefixAccess: false,
 			hasRecursiveAccess: false,
 			hasRecursiveAccess: false,
 		},
 		},
+		{ // guest access in non-TLS mode
+			key: "/foo",
+			req: (func() *http.Request {
+				return mustJSONRequest(t, "GET", "somepath", "")
+			})(),
+			store: &mockAuthStore{
+				enabled: true,
+				users: map[string]*auth.User{
+					"root": {
+						User:     "root",
+						Password: goodPassword,
+						Roles:    []string{"root"},
+					},
+				},
+				roles: map[string]*auth.Role{
+					"guest": {
+						Role: "guest",
+						Permissions: auth.Permissions{
+							KV: auth.RWPermission{
+								Read:  []string{"/foo*"},
+								Write: []string{"/foo*"},
+							},
+						},
+					},
+				},
+			},
+			hasRoot:            false,
+			hasKeyPrefixAccess: true,
+			hasRecursiveAccess: true,
+		},
 	}
 	}
 
 
 	for i, tt := range table {
 	for i, tt := range table {