mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:17:32 +00:00
feat: ldap provider login (#5448)
Add the logic to configure and use LDAP provider as an external IDP with a dedicated login GUI.
This commit is contained in:
@@ -1268,23 +1268,26 @@ func (c *Commands) prepareAddOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLD
|
||||
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAfdd", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.Host = strings.TrimSpace(provider.Host); provider.Host == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SDVg2", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sv31s", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.UserObjectClass = strings.TrimSpace(provider.UserObjectClass); provider.UserObjectClass == "" {
|
||||
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdgf4", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.UserUniqueAttribute = strings.TrimSpace(provider.UserUniqueAttribute); provider.UserUniqueAttribute == "" {
|
||||
if provider.BindPassword = strings.TrimSpace(provider.BindPassword); provider.BindPassword == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-AEG2w", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.Admin = strings.TrimSpace(provider.Admin); provider.Admin == "" {
|
||||
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAD5n", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.Password = strings.TrimSpace(provider.Password); provider.Password == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdf5h", "Errors.Invalid.Argument")
|
||||
if len(provider.Servers) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAy945n", "Errors.Invalid.Argument")
|
||||
}
|
||||
if len(provider.UserObjectClasses) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-S1x705n", "Errors.Invalid.Argument")
|
||||
}
|
||||
if len(provider.UserFilters) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-aAx9x1n", "Errors.Invalid.Argument")
|
||||
}
|
||||
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
|
||||
events, err := filter(ctx, writeModel.Query())
|
||||
@@ -1295,7 +1298,7 @@ func (c *Commands) prepareAddOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLD
|
||||
if err = writeModel.Reduce(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
secret, err := crypto.Encrypt([]byte(provider.Password), c.idpConfigEncryption)
|
||||
secret, err := crypto.Encrypt([]byte(provider.BindPassword), c.idpConfigEncryption)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1305,14 +1308,15 @@ func (c *Commands) prepareAddOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLD
|
||||
&a.Aggregate,
|
||||
writeModel.ID,
|
||||
provider.Name,
|
||||
provider.Host,
|
||||
provider.Port,
|
||||
provider.TLS,
|
||||
provider.Servers,
|
||||
provider.StartTLS,
|
||||
provider.BaseDN,
|
||||
provider.UserObjectClass,
|
||||
provider.UserUniqueAttribute,
|
||||
provider.Admin,
|
||||
provider.BindDN,
|
||||
secret,
|
||||
provider.UserBase,
|
||||
provider.UserObjectClasses,
|
||||
provider.UserFilters,
|
||||
provider.Timeout,
|
||||
provider.LDAPAttributes,
|
||||
provider.IDPOptions,
|
||||
),
|
||||
@@ -1329,21 +1333,24 @@ func (c *Commands) prepareUpdateOrgLDAPProvider(a *org.Aggregate, writeModel *Or
|
||||
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sffgd", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.Host = strings.TrimSpace(provider.Host); provider.Host == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dz62d", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-vb3ss", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.UserObjectClass = strings.TrimSpace(provider.UserObjectClass); provider.UserObjectClass == "" {
|
||||
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-hbere", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.UserUniqueAttribute = strings.TrimSpace(provider.UserUniqueAttribute); provider.UserUniqueAttribute == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-ASFt6", "Errors.Invalid.Argument")
|
||||
}
|
||||
if provider.Admin = strings.TrimSpace(provider.Admin); provider.Admin == "" {
|
||||
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-DG45z", "Errors.Invalid.Argument")
|
||||
}
|
||||
if len(provider.Servers) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sxx945n", "Errors.Invalid.Argument")
|
||||
}
|
||||
if len(provider.UserObjectClasses) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-S1p605n", "Errors.Invalid.Argument")
|
||||
}
|
||||
if len(provider.UserFilters) == 0 {
|
||||
return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-aBx901n", "Errors.Invalid.Argument")
|
||||
}
|
||||
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
|
||||
events, err := filter(ctx, writeModel.Query())
|
||||
if err != nil {
|
||||
@@ -1360,16 +1367,16 @@ func (c *Commands) prepareUpdateOrgLDAPProvider(a *org.Aggregate, writeModel *Or
|
||||
ctx,
|
||||
&a.Aggregate,
|
||||
writeModel.ID,
|
||||
writeModel.Name,
|
||||
provider.Name,
|
||||
provider.Host,
|
||||
provider.Port,
|
||||
provider.TLS,
|
||||
provider.Servers,
|
||||
provider.StartTLS,
|
||||
provider.BaseDN,
|
||||
provider.UserObjectClass,
|
||||
provider.UserUniqueAttribute,
|
||||
provider.Admin,
|
||||
provider.Password,
|
||||
provider.BindDN,
|
||||
provider.BindPassword,
|
||||
provider.UserBase,
|
||||
provider.UserObjectClasses,
|
||||
provider.UserFilters,
|
||||
provider.Timeout,
|
||||
c.idpConfigEncryption,
|
||||
provider.LDAPAttributes,
|
||||
provider.IDPOptions,
|
||||
|
Reference in New Issue
Block a user