Files
rtsp-simple-server/internal/protocols/httpp/credentials.go

34 lines
682 B
Go

package httpp
import (
"net/http"
"strings"
"github.com/bluenviron/mediamtx/internal/auth"
)
// Credentials extracts credentials from a HTTP request.
func Credentials(h *http.Request) *auth.Credentials {
c := &auth.Credentials{}
for _, auth := range h.Header["Authorization"] {
if strings.HasPrefix(auth, "Bearer ") {
// user:pass in Authorization Bearer
if parts := strings.Split(auth[len("Bearer "):], ":"); len(parts) == 2 {
c.User = parts[0]
c.Pass = parts[1]
return c
}
// JWT in Authorization Bearer
c.Token = auth[len("Bearer "):]
return c
}
}
// user:pass in Authorization Basic
c.User, c.Pass, _ = h.BasicAuth()
return c
}