chore: improve naive auth logical

This commit is contained in:
septs 2023-10-08 11:39:32 +08:00 committed by 世界
parent 8214da9697
commit 2258cd248b
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4

View File

@ -2,7 +2,6 @@ package inbound
import ( import (
"context" "context"
"encoding/base64"
"encoding/binary" "encoding/binary"
"io" "io"
"math/rand" "math/rand"
@ -139,16 +138,13 @@ func (n *Naive) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
n.badRequest(ctx, request, E.New("missing naive padding")) n.badRequest(ctx, request, E.New("missing naive padding"))
return return
} }
var authOk bool // HACK: reuse go builtin basic auth parsing
var userName string request.Header.Set("Authorization", request.Header.Get("Proxy-Authorization"))
authorization := request.Header.Get("Proxy-Authorization") userName, password, ok := request.BasicAuth()
if strings.HasPrefix(authorization, "BASIC ") || strings.HasPrefix(authorization, "Basic ") { if ok {
userPassword, _ := base64.URLEncoding.DecodeString(authorization[6:]) ok = n.authenticator.Verify(userName, password)
userPswdArr := strings.SplitN(string(userPassword), ":", 2)
userName = userPswdArr[0]
authOk = n.authenticator.Verify(userPswdArr[0], userPswdArr[1])
} }
if !authOk { if !ok {
rejectHTTP(writer, http.StatusProxyAuthRequired) rejectHTTP(writer, http.StatusProxyAuthRequired)
n.badRequest(ctx, request, E.New("authorization failed")) n.badRequest(ctx, request, E.New("authorization failed"))
return return