Skip to content

Commit de34b5e

Browse files
authored
Fix ldap SA when email has _ (#87)
* Fix ldap Service Account when email has `_` * bump up helm chart * Add Test for emails with special characters Signed-off-by: Victor Godoy Hernández <[email protected]>
1 parent bf9efba commit de34b5e

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

charts/jwt-to-rbac/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
apiVersion: v2
2-
appVersion: 0.6.3
2+
appVersion: 0.6.4
33
description: A Helm chart for Kubernetes
44
name: jwt-to-rbac
5-
version: 0.6.3
5+
version: 0.6.4
66
home: https://github.com/banzaicloud/jwt-to-rbac
77
maintainers:
88
- name: BanzaiCloud

pkg/rbachandler/rbac_handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ func generateRbacResources(user *tokenhandler.User, config *Config, nameSpaces [
422422
saName = user.FederatedClaims.UserID
423423
groupList = githubRoleParser(user.Groups, config.GithubOrg)
424424
case "ldap", "local":
425-
r := strings.NewReplacer("@", "-", ".", "-")
425+
r := strings.NewReplacer("@", "-", ".", "-", "_", "-")
426426
saName = r.Replace(user.Email)
427427
groupList = user.Groups
428428
default:

pkg/rbachandler/rbac_handler_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,50 @@ func TestGenerateRbacResourcesWithNameSpaces(t *testing.T) {
187187

188188
}
189189

190+
func TestGenerateRbacResourcesWithEmailWithSpecialCharacters(t *testing.T) {
191+
logger := createLogger()
192+
assert := assert.New(t)
193+
groups := []string{"admins", "developers"}
194+
federatedClaims := tokenhandler.FederatedClaims{
195+
ConnectorID: "ldap",
196+
UserID: "cn=jane,ou=People,dc=example,dc=org",
197+
}
198+
user := &tokenhandler.User{
199+
200+
Groups: groups,
201+
FederatedClaims: federatedClaims,
202+
}
203+
testRbacResources, err := generateRbacResources(user, createFakeConfig("developers"), []string{"default"}, logger)
204+
assert.NoError(err)
205+
roleSuccess := assert.Equal(len(testRbacResources.clusterRoles), 1)
206+
assert.Equal(len(testRbacResources.clusterRoleBindings), 2)
207+
assert.Equal(testRbacResources.serviceAccount.Name, "jane-doe-foo-example-com")
208+
if roleSuccess {
209+
assert.Equal(testRbacResources.clusterRoles[0].name, "developers-from-jwt")
210+
}
211+
var bindNames, roleNames []string
212+
for _, crBind := range testRbacResources.clusterRoleBindings {
213+
bindNames = append(bindNames, crBind.name)
214+
roleNames = append(roleNames, crBind.roleName)
215+
}
216+
assert.ElementsMatch(bindNames, []string{"jane-doe-foo-example-com-admin-binding", "jane-doe-foo-example-com-developers-from-jwt-binding"})
217+
assert.ElementsMatch(roleNames, []string{"admin", "developers-from-jwt"})
218+
219+
testRbacResources, err = generateRbacResources(user, createFakeConfig("fakegroup"), []string{"default"}, logger)
220+
assert.NoError(err)
221+
assert.Equal(len(testRbacResources.clusterRoles), 0)
222+
assert.Equal(len(testRbacResources.clusterRoleBindings), 1)
223+
assert.Equal(testRbacResources.serviceAccount.Name, "jane-doe-foo-example-com")
224+
bindNames = nil
225+
roleNames = nil
226+
for _, crBind := range testRbacResources.clusterRoleBindings {
227+
bindNames = append(bindNames, crBind.name)
228+
roleNames = append(roleNames, crBind.roleName)
229+
}
230+
assert.ElementsMatch(bindNames, []string{"jane-doe-foo-example-com-admin-binding"})
231+
assert.ElementsMatch(roleNames, []string{"admin"})
232+
}
233+
190234
func TestGenerateClusterRole(t *testing.T) {
191235
assert := assert.New(t)
192236
cRole, err := generateClusterRole("developers", createFakeConfig("developers"))

0 commit comments

Comments
 (0)