[MM-10346] CSRF Token Implementation + Tests (#10067)

* CSRF Token Implementation + Tests

Remove debug statements

Implement requested changes

* Fix non-cookie authentication methods stripping auth data from requests

* Fail when CSRF cookie is not returned as part of login
Этот коммит содержится в:
Daniel Schalla
2019-01-31 20:39:02 +01:00
коммит произвёл GitHub
родитель 86aa01cf36
Коммит 7cc66ee1d4
10 изменённых файлов: 202 добавлений и 36 удалений

Просмотреть файл

@@ -27,6 +27,7 @@ const (
HEADER_REAL_IP = "X-Real-IP"
HEADER_FORWARDED_PROTO = "X-Forwarded-Proto"
HEADER_TOKEN = "token"
HEADER_CSRF_TOKEN = "X-CSRF-Token"
HEADER_BEARER = "BEARER"
HEADER_AUTH = "Authorization"
HEADER_REQUESTED_WITH = "X-Requested-With"

Просмотреть файл

@@ -283,6 +283,7 @@ type ServiceSettings struct {
DEPRECATED_DO_NOT_USE_ImageProxyOptions *string `json:"ImageProxyOptions"` // This field is deprecated and must not be used.
EnableAPITeamDeletion *bool
ExperimentalEnableHardenedMode *bool
ExperimentalStrictCSRFEnforcement *bool
EnableEmailInvitations *bool
ExperimentalLdapGroupSync *bool
}
@@ -611,6 +612,10 @@ func (s *ServiceSettings) SetDefaults() {
if s.ExperimentalLdapGroupSync == nil {
s.ExperimentalLdapGroupSync = NewBool(false)
}
if s.ExperimentalStrictCSRFEnforcement == nil {
s.ExperimentalStrictCSRFEnforcement = NewBool(false)
}
}
type ClusterSettings struct {

Просмотреть файл

@@ -12,6 +12,7 @@ import (
const (
SESSION_COOKIE_TOKEN = "MMAUTHTOKEN"
SESSION_COOKIE_USER = "MMUSERID"
SESSION_COOKIE_CSRF = "MMCSRF"
SESSION_CACHE_SIZE = 35000
SESSION_PROP_PLATFORM = "platform"
SESSION_PROP_OS = "os"