MM-16860 Support Guest Authentication via SAML (#12622)

* add GuestAttribute setting

* Add Constant

* add isdefault_guest_attribute to diagnostics.go

* revert changes to go.mod

* revert changes to LdapInterface.go

* revert changes to LdapInterface.go

* revert changes to LdapInterface.go
Этот коммит содержится в:
Scott Bishel
2019-10-10 11:37:57 -06:00
коммит произвёл GitHub
родитель 34b4bbcb46
Коммит 3f6f44f34c
4 изменённых файлов: 34 добавлений и 0 удалений

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

@@ -130,6 +130,7 @@ const (
LDAP_SETTINGS_DEFAULT_GROUP_ID_ATTRIBUTE = ""
SAML_SETTINGS_DEFAULT_ID_ATTRIBUTE = ""
SAML_SETTINGS_DEFAULT_GUEST_ATTRIBUTE = ""
SAML_SETTINGS_DEFAULT_FIRST_NAME_ATTRIBUTE = ""
SAML_SETTINGS_DEFAULT_LAST_NAME_ATTRIBUTE = ""
SAML_SETTINGS_DEFAULT_EMAIL_ATTRIBUTE = ""
@@ -1907,6 +1908,7 @@ type SamlSettings struct {
// User Mapping
IdAttribute *string
GuestAttribute *string
FirstNameAttribute *string
LastNameAttribute *string
EmailAttribute *string
@@ -1999,6 +2001,9 @@ func (s *SamlSettings) SetDefaults() {
s.IdAttribute = NewString(SAML_SETTINGS_DEFAULT_ID_ATTRIBUTE)
}
if s.GuestAttribute == nil {
s.GuestAttribute = NewString(SAML_SETTINGS_DEFAULT_GUEST_ATTRIBUTE)
}
if s.FirstNameAttribute == nil {
s.FirstNameAttribute = NewString(SAML_SETTINGS_DEFAULT_FIRST_NAME_ATTRIBUTE)
}
@@ -2835,6 +2840,15 @@ func (ss *SamlSettings) isValid() *AppError {
if !(*ss.CanonicalAlgorithm == SAML_SETTINGS_CANONICAL_ALGORITHM_C14N || *ss.CanonicalAlgorithm == SAML_SETTINGS_CANONICAL_ALGORITHM_C14N11) {
return NewAppError("Config.IsValid", "model.config.is_valid.saml_canonical_algorithm.app_error", nil, "", http.StatusBadRequest)
}
if len(*ss.GuestAttribute) > 0 {
if !(strings.Contains(*ss.GuestAttribute, "=")) {
return NewAppError("Config.IsValid", "model.config.is_valid.saml_guest_attribute.app_error", nil, "", http.StatusBadRequest)
}
if len(strings.Split(*ss.GuestAttribute, "=")) != 2 {
return NewAppError("Config.IsValid", "model.config.is_valid.saml_guest_attribute.app_error", nil, "", http.StatusBadRequest)
}
}
}
return nil

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

@@ -195,6 +195,21 @@ func TestConfigIsValidFakeAlgorithm(t *testing.T) {
require.Equal(t, "model.config.is_valid.saml_signature_algorithm.app_error", err.Message)
}
func TestConfigOverwriteGuestSettings(t *testing.T) {
const attribute = "FakeAttributeName"
c1 := Config{
SamlSettings: SamlSettings{
GuestAttribute: NewString(attribute),
},
}
c1.SetDefaults()
if *c1.SamlSettings.GuestAttribute != attribute {
t.Fatal("SamlSettings.GuestAttribute should be overwritten")
}
}
func TestConfigDefaultServiceSettingsExperimentalGroupUnreadChannels(t *testing.T) {
c1 := Config{}
c1.SetDefaults()