Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
a6f1fd8
commit for referral addition
Oct 13, 2025
2976564
commit for referral addition
Oct 13, 2025
6e7ba19
Merge branch 'main' of https://github.com/demetthyl/terraform-provide…
Oct 28, 2025
86ce05b
Merge branch 'main' of https://github.com/demetthyl/terraform-provide…
Oct 28, 2025
1b208c6
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
aa5e85f
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
87c03a5
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
2743cd2
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
71bc70e
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
2115868
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
ee82f94
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
04d0b18
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
970691e
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
49cac8c
Merge remote-tracking branch 'origin/main'
Oct 28, 2025
0e8953e
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
a15f860
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
4eb0e92
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
8008e5f
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
75d69f5
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
9ccaeff
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
729c5a6
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
762b692
commit for referral addition
Oct 13, 2025
520127b
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
d4da7c2
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
794abfc
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
a230135
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
42e2416
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
ebdd4d8
Merge remote-tracking branch 'origin/main'
Oct 29, 2025
6123125
Merge remote-tracking branch 'origin/main'
Oct 31, 2025
5c49bfb
commit for referral addition
Oct 13, 2025
ef284ad
Merge remote-tracking branch 'origin/main'
Nov 4, 2025
74e6615
Merge remote-tracking branch 'origin/main'
Nov 4, 2025
60cb9c7
Merge remote-tracking branch 'origin/main'
Nov 4, 2025
1276326
Merge remote-tracking branch 'origin/main'
Nov 4, 2025
9e46e27
Merge pull request #1 from keycloak/main
demetthyl Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ resource "keycloak_ldap_user_federation" "ldap_user_federation" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_msad_lds_user_account_control_mapper" "msad_lds_user_account_control_mapper" {
Expand Down
1 change: 1 addition & 0 deletions docs/resources/ldap_msad_user_account_control_mapper.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ resource "keycloak_ldap_user_federation" "ldap_user_federation" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_msad_user_account_control_mapper" "msad_user_account_control_mapper" {
Expand Down
8 changes: 6 additions & 2 deletions docs/resources/ldap_user_federation.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ resource "keycloak_ldap_user_federation" "ldap_user_federation" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

connection_timeout = "5s"
read_timeout = "10s"
Expand Down Expand Up @@ -67,8 +68,11 @@ resource "keycloak_ldap_user_federation" "ldap_user_federation" {
- `bind_credential` - (Optional) Password of LDAP admin. This attribute must be set if `bind_dn` is set.
- `custom_user_search_filter` - (Optional) Additional LDAP filter for filtering searched users. Must begin with `(` and end with `)`.
- `search_scope` - (Optional) Can be one of `ONE_LEVEL` or `SUBTREE`:
- `ONE_LEVEL`: Only search for users in the DN specified by `user_dn`.
- `SUBTREE`: Search entire LDAP subtree.
- `ONE_LEVEL`: Only search for users in the DN specified by `user_dn`.
- `SUBTREE`: Search entire LDAP subtree.
- `referral` - (Optional) Specifies if LDAP referrals should be followed or ignored. Can be one of `ignore` or `follow`:
- `ignore`: default mode.
- `follow`: follow ldaps, even untrusted ones.
- `start_tls` - (Optional) When `true`, Keycloak will encrypt the connection to LDAP using STARTTLS, which will disable connection pooling.
- `use_password_modify_extended_op` - (Optional) When `true`, use the LDAPv3 Password Modify Extended Operation (RFC-3062).
- `validate_password_policy` - (Optional) When `true`, Keycloak will validate passwords using the realm policy before updating it.
Expand Down
12 changes: 12 additions & 0 deletions keycloak/ldap_user_federation.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ type LdapUserFederation struct {
BindCredential string
CustomUserSearchFilter string // must start with '(' and end with ')'
SearchScope string // api expects "1" or "2", but that means "One Level" or "Subtree"
Referral string

StartTls bool
UsePasswordModifyExtendedOp bool
Expand Down Expand Up @@ -101,6 +102,9 @@ func convertFromLdapUserFederationToComponent(ldap *LdapUserFederation) (*compon
"searchScope": {
ldap.SearchScope,
},
"referral": {
ldap.Referral,
},
"startTls": {
strconv.FormatBool(ldap.StartTls),
},
Expand Down Expand Up @@ -157,6 +161,7 @@ func convertFromLdapUserFederationToComponent(ldap *LdapUserFederation) (*compon
} else {
componentConfig["searchScope"] = []string{"2"}
}
componentConfig["referral"] = []string{ldap.Referral}

if ldap.CustomUserSearchFilter != "" {
componentConfig["customUserSearchFilter"] = []string{ldap.CustomUserSearchFilter}
Expand Down Expand Up @@ -321,6 +326,7 @@ func convertFromComponentToLdapUserFederation(component *component) (*LdapUserFe
BindCredential: component.getConfig("bindCredential"),
CustomUserSearchFilter: component.getConfig("customUserSearchFilter"),
SearchScope: component.getConfig("searchScope"),
Referral: component.getConfig("referral"),

StartTls: startTls,
UsePasswordModifyExtendedOp: usePasswordModifyExtendedOp,
Expand All @@ -346,6 +352,12 @@ func convertFromComponentToLdapUserFederation(component *component) (*LdapUserFe
ldap.BindDn = bindDn
}

if referral := component.getConfig("referral"); referral != "" {
ldap.Referral = referral
} else {
ldap.Referral = "ignore"
}

if bindCredential := component.getConfig("bindCredential"); bindCredential != "" {
ldap.BindCredential = bindCredential
}
Expand Down
2 changes: 2 additions & 0 deletions provider/resource_keycloak_hardcoded_attribute_mapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_hardcoded_attribute_mapper" "hardcoded_attribute_mapper" {
Expand Down
12 changes: 12 additions & 0 deletions provider/resource_keycloak_ldap_custom_mapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_custom_mapper" "sample_mapper" {
Expand Down Expand Up @@ -242,6 +243,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_custom_mapper" "sample_mapper" {
Expand Down Expand Up @@ -283,6 +286,8 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -302,6 +307,8 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_custom_mapper" "sample_mapper" {
Expand Down Expand Up @@ -342,6 +349,9 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"


}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -361,6 +371,8 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_custom_mapper" "sample_mapper" {
Expand Down
22 changes: 20 additions & 2 deletions provider/resource_keycloak_ldap_full_name_mapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package provider

import (
"fmt"
"regexp"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
"github.com/keycloak/terraform-provider-keycloak/keycloak"
"regexp"
"testing"
)

func TestAccKeycloakLdapFullNameMapper_basic(t *testing.T) {
Expand Down Expand Up @@ -110,6 +111,7 @@ func TestAccKeycloakLdapFullNameMapper_writableValidation(t *testing.T) {
}

func TestAccKeycloakLdapFullNameMapper_updateLdapUserFederation(t *testing.T) {
skipIfVersionIsLessThan(testCtx, t, keycloakClient, keycloak.Version_24)
t.Parallel()

mapperName := acctest.RandomWithPrefix("tf-acc")
Expand Down Expand Up @@ -231,6 +233,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down Expand Up @@ -266,6 +270,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down Expand Up @@ -307,6 +313,8 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -326,6 +334,8 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down Expand Up @@ -365,6 +375,8 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -384,6 +396,8 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down Expand Up @@ -420,6 +434,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down Expand Up @@ -457,6 +473,8 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"

}

resource "keycloak_ldap_full_name_mapper" "full_name_mapper" {
Expand Down
16 changes: 14 additions & 2 deletions provider/resource_keycloak_ldap_group_mapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@ package provider

import (
"fmt"
"regexp"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
"github.com/keycloak/terraform-provider-keycloak/keycloak"
"regexp"
"testing"
)

func TestAccKeycloakLdapGroupMapper_basic(t *testing.T) {
skipIfVersionIsLessThan(testCtx, t, keycloakClient, keycloak.Version_24)
t.Parallel()

groupMapperName := acctest.RandomWithPrefix("tf-acc")
Expand All @@ -35,6 +37,7 @@ func TestAccKeycloakLdapGroupMapper_basic(t *testing.T) {
}

func TestAccKeycloakLdapGroupMapper_createAfterManualDestroy(t *testing.T) {
skipIfVersionIsLessThan(testCtx, t, keycloakClient, keycloak.Version_24)
t.Parallel()

var mapper = &keycloak.LdapGroupMapper{}
Expand Down Expand Up @@ -367,6 +370,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -410,6 +414,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -455,6 +460,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -501,6 +507,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -553,6 +560,7 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -572,6 +580,7 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -620,6 +629,7 @@ resource "keycloak_ldap_user_federation" "openldap_one" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_user_federation" "openldap_two" {
Expand All @@ -639,6 +649,7 @@ resource "keycloak_ldap_user_federation" "openldap_two" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down Expand Up @@ -687,6 +698,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_group_mapper" "group_mapper" {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_ldap_hardcoded_attribute_mapper" "hardcoded_attribute_mapper" {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_group" "hardcoded_group_mapper_test" {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ resource "keycloak_ldap_user_federation" "openldap" {
users_dn = "dc=example,dc=org"
bind_dn = "cn=admin,dc=example,dc=org"
bind_credential = "admin"
referral = "ignore"
}

resource "keycloak_role" "hardcoded_role_mapper_test" {
Expand Down
Loading
Loading