Skip to content

Commit 13b7e01

Browse files
author
wenge
committed
add connection_pooling params for userfederation Signed-off-by: Wenge Ma <[email protected]>
1 parent 959998a commit 13b7e01

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

docs/resources/ldap_user_federation.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ resource "keycloak_ldap_user_federation" "ldap_user_federation" {
7070
- `ONE_LEVEL`: Only search for users in the DN specified by `user_dn`.
7171
- `SUBTREE`: Search entire LDAP subtree.
7272
- `start_tls` - (Optional) When `true`, Keycloak will encrypt the connection to LDAP using STARTTLS, which will disable connection pooling.
73+
- `connection_pooling` - (Optional) When `true`, LDAP connection pooling is enabled. Defaults to `true`.
7374
- `use_password_modify_extended_op` - (Optional) When `true`, use the LDAPv3 Password Modify Extended Operation (RFC-3062).
7475
- `validate_password_policy` - (Optional) When `true`, Keycloak will validate passwords using the realm policy before updating it.
7576
- `trust_email` - (Optional) If enabled, email provided by this provider is not verified even if verification is enabled for the realm.

keycloak/ldap_user_federation.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type LdapUserFederation struct {
3939
ConnectionTimeout string // duration string (ex: 1h30m)
4040
ReadTimeout string // duration string (ex: 1h30m)
4141
Pagination bool
42+
ConnectionPooling bool
4243

4344
ServerPrincipal string
4445
UseKerberosForPasswordAuthentication bool
@@ -104,6 +105,9 @@ func convertFromLdapUserFederationToComponent(ldap *LdapUserFederation) (*compon
104105
"startTls": {
105106
strconv.FormatBool(ldap.StartTls),
106107
},
108+
"connectionPooling": {
109+
strconv.FormatBool(ldap.ConnectionPooling),
110+
},
107111
"usePasswordModifyExtendedOp": {
108112
strconv.FormatBool(ldap.UsePasswordModifyExtendedOp),
109113
},
@@ -253,6 +257,11 @@ func convertFromComponentToLdapUserFederation(component *component) (*LdapUserFe
253257
return nil, err
254258
}
255259

260+
connectionPooling, err := parseBoolAndTreatEmptyStringAsFalse(component.getConfig("connectionPooling"))
261+
if err != nil {
262+
return nil, err
263+
}
264+
256265
usePasswordModifyExtendedOp, err := parseBoolAndTreatEmptyStringAsFalse(component.getConfig("usePasswordModifyExtendedOp"))
257266
if err != nil {
258267
return nil, err
@@ -323,6 +332,7 @@ func convertFromComponentToLdapUserFederation(component *component) (*LdapUserFe
323332
SearchScope: component.getConfig("searchScope"),
324333

325334
StartTls: startTls,
335+
ConnectionPooling: connectionPooling,
326336
UsePasswordModifyExtendedOp: usePasswordModifyExtendedOp,
327337
ValidatePasswordPolicy: validatePasswordPolicy,
328338
TrustEmail: trustEmail,

provider/resource_keycloak_ldap_user_federation.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ func resourceKeycloakLdapUserFederation() *schema.Resource {
147147
Default: false,
148148
Description: "When true, Keycloak will encrypt the connection to LDAP using STARTTLS, which will disable connection pooling.",
149149
},
150+
"connection_pooling": {
151+
Type: schema.TypeBool,
152+
Optional: true,
153+
Default: true,
154+
Description: "When true, Keycloak will use connection pooling when connecting to LDAP.",
155+
},
150156
"use_password_modify_extended_op": {
151157
Type: schema.TypeBool,
152158
Optional: true,
@@ -341,6 +347,7 @@ func getLdapUserFederationFromData(data *schema.ResourceData, realmInternalId st
341347
SearchScope: data.Get("search_scope").(string),
342348

343349
StartTls: data.Get("start_tls").(bool),
350+
ConnectionPooling: data.Get("connection_pooling").(bool),
344351
UsePasswordModifyExtendedOp: data.Get("use_password_modify_extended_op").(bool),
345352
ValidatePasswordPolicy: data.Get("validate_password_policy").(bool),
346353
TrustEmail: data.Get("trust_email").(bool),
@@ -412,6 +419,7 @@ func setLdapUserFederationData(data *schema.ResourceData, ldap *keycloak.LdapUse
412419
data.Set("search_scope", ldap.SearchScope)
413420

414421
data.Set("start_tls", ldap.StartTls)
422+
data.Set("connection_pooling", ldap.ConnectionPooling)
415423
data.Set("use_password_modify_extended_op", ldap.UsePasswordModifyExtendedOp)
416424
data.Set("validate_password_policy", ldap.ValidatePasswordPolicy)
417425
data.Set("trust_email", ldap.TrustEmail)

0 commit comments

Comments
 (0)