接入接口安全中间件配置
This commit is contained in:
parent
4bf2a20efa
commit
ce1a232208
@ -21,15 +21,21 @@ import (
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Registry *registry.Registry
|
||||
DeveloperToken string
|
||||
MaxUploadBytes int64
|
||||
Users *users.Store
|
||||
Mailer notify.Sender
|
||||
SessionDuration time.Duration
|
||||
Logger *log.Logger
|
||||
resetMu sync.Mutex
|
||||
resetTokens map[string]resetToken
|
||||
Registry *registry.Registry
|
||||
DeveloperToken string
|
||||
MaxUploadBytes int64
|
||||
Users *users.Store
|
||||
Mailer notify.Sender
|
||||
SessionDuration time.Duration
|
||||
AllowedOrigins []string
|
||||
AllowedHosts []string
|
||||
ForceHTTPS bool
|
||||
TrustProxy bool
|
||||
AllowLegacyToken bool
|
||||
RateLimitPerMinute int
|
||||
Logger *log.Logger
|
||||
resetMu sync.Mutex
|
||||
resetTokens map[string]resetToken
|
||||
}
|
||||
|
||||
type resetToken struct {
|
||||
@ -69,7 +75,7 @@ func (s *Server) Handler() http.Handler {
|
||||
mux.HandleFunc("GET /api/v1/updates/stream", s.stream)
|
||||
mux.HandleFunc("GET /api/v1/packages", s.packageList)
|
||||
mux.HandleFunc("GET /api/v1/packages/", s.packageRoute)
|
||||
return cors(logging(mux))
|
||||
return securityHeaders(s.hostGuard(s.rateLimit(s.cors(logging(mux)))))
|
||||
}
|
||||
|
||||
func (s *Server) health(writer http.ResponseWriter, _ *http.Request) {
|
||||
@ -407,7 +413,7 @@ func (s *Server) authenticatedUser(request *http.Request) (users.User, bool) {
|
||||
}
|
||||
|
||||
func (s *Server) uploadUser(request *http.Request) (users.User, bool) {
|
||||
if s.DeveloperToken != "" {
|
||||
if s.DeveloperToken != "" && (s.AllowLegacyToken || (s.AllowedHosts == nil && s.AllowedOrigins == nil)) {
|
||||
value := request.Header.Get("Authorization")
|
||||
if strings.HasPrefix(value, "Bearer ") && strings.TrimPrefix(value, "Bearer ") == s.DeveloperToken {
|
||||
return users.User{ID: "legacy-token", Email: "", Name: "兼容令牌", Role: users.RoleDeveloper, Active: true}, true
|
||||
|
||||
Loading…
Reference in New Issue
Block a user