mirror of
https://github.com/hacdias/webdav.git
synced 2026-09-25 20:51:53 +08:00
Add Support For BCrypt Storage of Passwords
This commit is contained in:
+14
-1
@@ -11,8 +11,10 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/hacdias/webdav"
|
"github.com/hacdias/webdav"
|
||||||
|
"golang.org/x/crypto/bcrypt"
|
||||||
wd "golang.org/x/net/webdav"
|
wd "golang.org/x/net/webdav"
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
@@ -213,7 +215,8 @@ func basicAuth(c *cfg) http.Handler {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if password != p {
|
if !checkPassword(p, password) {
|
||||||
|
log.Println("Wrong Password for user", username)
|
||||||
http.Error(w, "Not authorized", 401)
|
http.Error(w, "Not authorized", 401)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -222,6 +225,16 @@ func basicAuth(c *cfg) http.Handler {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkPassword(saved, input string) bool {
|
||||||
|
|
||||||
|
if strings.HasPrefix(saved, "{bcrypt}") {
|
||||||
|
savedPassword := strings.TrimPrefix(saved, "{bcrypt}")
|
||||||
|
return bcrypt.CompareHashAndPassword([]byte(savedPassword), []byte(input)) == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return saved == input
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
cfg := parseConfig()
|
cfg := parseConfig()
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ port: 8080
|
|||||||
users:
|
users:
|
||||||
- username: admin
|
- username: admin
|
||||||
password: admin
|
password: admin
|
||||||
|
- username: encrypted
|
||||||
|
password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
|
||||||
- username: basic
|
- username: basic
|
||||||
password: basic
|
password: basic
|
||||||
modify: false
|
modify: false
|
||||||
|
|||||||
Reference in New Issue
Block a user