Przeglądaj źródła

Basic Auth now supports LDAP username and password (#6940)

Utkarsh Bhatnagar 9 lat temu
rodzic
commit
5777f65d05
2 zmienionych plików z 6 dodań i 4 usunięć
  1. 1 1
      docs/sources/http_api/auth.md
  2. 5 3
      pkg/middleware/middleware.go

+ 1 - 1
docs/sources/http_api/auth.md

@@ -18,7 +18,7 @@ Currently you can authenticate via an `API Token` or via a `Session cookie` (acq
 ## Basic Auth
 ## Basic Auth
 
 
 If basic auth is enabled (it is enabled by default) you can authenticate your HTTP request via
 If basic auth is enabled (it is enabled by default) you can authenticate your HTTP request via
-standard basic auth.
+standard basic auth. Basic auth will also authenticate LDAP users.
 
 
 curl example:
 curl example:
 ```
 ```

+ 5 - 3
pkg/middleware/middleware.go

@@ -9,6 +9,7 @@ import (
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/components/apikeygen"
 	"github.com/grafana/grafana/pkg/components/apikeygen"
 	"github.com/grafana/grafana/pkg/log"
 	"github.com/grafana/grafana/pkg/log"
+	l "github.com/grafana/grafana/pkg/login"
 	"github.com/grafana/grafana/pkg/metrics"
 	"github.com/grafana/grafana/pkg/metrics"
 	m "github.com/grafana/grafana/pkg/models"
 	m "github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/setting"
 	"github.com/grafana/grafana/pkg/setting"
@@ -137,6 +138,7 @@ func initContextWithApiKey(ctx *Context) bool {
 }
 }
 
 
 func initContextWithBasicAuth(ctx *Context) bool {
 func initContextWithBasicAuth(ctx *Context) bool {
+
 	if !setting.BasicAuthEnabled {
 	if !setting.BasicAuthEnabled {
 		return false
 		return false
 	}
 	}
@@ -160,9 +162,9 @@ func initContextWithBasicAuth(ctx *Context) bool {
 
 
 	user := loginQuery.Result
 	user := loginQuery.Result
 
 
-	// validate password
-	if util.EncodePassword(password, user.Salt) != user.Password {
-		ctx.JsonApiErr(401, "Invalid username or password", nil)
+	loginUserQuery := l.LoginUserQuery{Username: username, Password: password, User: user}
+	if err := bus.Dispatch(&loginUserQuery); err != nil {
+		ctx.JsonApiErr(401, "Invalid username or password", err)
 		return true
 		return true
 	}
 	}