Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
dex
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
dex
Commits
2d1ac74e
Unverified
Commit
2d1ac74e
authored
Jan 09, 2019
by
Stephan Renatus
Committed by
GitHub
Jan 09, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1380 from dkess/emailsuffix
LDAP connector - add emailSuffix config option
parents
27f66e79
ee54a509
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
5 deletions
+74
-5
ldap.go
connector/ldap/ldap.go
+12
-5
ldap_test.go
connector/ldap/ldap_test.go
+62
-0
No files found.
connector/ldap/ldap.go
View file @
2d1ac74e
...
...
@@ -107,6 +107,10 @@ type Config struct {
IDAttr
string
`json:"idAttr"`
// Defaults to "uid"
EmailAttr
string
`json:"emailAttr"`
// Defaults to "mail"
NameAttr
string
`json:"nameAttr"`
// No default.
// If this is set, the email claim of the id token will be constructed from the idAttr and
// value of emailSuffix. This should not include the @ character.
EmailSuffix
string
`json:"emailSuffix"`
// No default.
}
`json:"userSearch"`
// Group search configuration.
...
...
@@ -331,11 +335,6 @@ func (c *ldapConnector) identityFromEntry(user ldap.Entry) (ident connector.Iden
if
ident
.
UserID
=
getAttr
(
user
,
c
.
UserSearch
.
IDAttr
);
ident
.
UserID
==
""
{
missing
=
append
(
missing
,
c
.
UserSearch
.
IDAttr
)
}
if
ident
.
Email
=
getAttr
(
user
,
c
.
UserSearch
.
EmailAttr
);
ident
.
Email
==
""
{
missing
=
append
(
missing
,
c
.
UserSearch
.
EmailAttr
)
}
// TODO(ericchiang): Let this value be set from an attribute.
ident
.
EmailVerified
=
true
if
c
.
UserSearch
.
NameAttr
!=
""
{
if
ident
.
Username
=
getAttr
(
user
,
c
.
UserSearch
.
NameAttr
);
ident
.
Username
==
""
{
...
...
@@ -343,6 +342,14 @@ func (c *ldapConnector) identityFromEntry(user ldap.Entry) (ident connector.Iden
}
}
if
c
.
UserSearch
.
EmailSuffix
!=
""
{
ident
.
Email
=
ident
.
Username
+
"@"
+
c
.
UserSearch
.
EmailSuffix
}
else
if
ident
.
Email
=
getAttr
(
user
,
c
.
UserSearch
.
EmailAttr
);
ident
.
Email
==
""
{
missing
=
append
(
missing
,
c
.
UserSearch
.
EmailAttr
)
}
// TODO(ericchiang): Let this value be set from an attribute.
ident
.
EmailVerified
=
true
if
len
(
missing
)
!=
0
{
err
:=
fmt
.
Errorf
(
"ldap: entry %q missing following required attribute(s): %q"
,
user
.
DN
,
missing
)
return
connector
.
Identity
{},
err
...
...
connector/ldap/ldap_test.go
View file @
2d1ac74e
...
...
@@ -123,6 +123,68 @@ userpassword: bar
runTests
(
t
,
schema
,
connectLDAP
,
c
,
tests
)
}
func
TestQueryWithEmailSuffix
(
t
*
testing
.
T
)
{
schema
:=
`
dn: dc=example,dc=org
objectClass: dcObject
objectClass: organization
o: Example Company
dc: example
dn: ou=People,dc=example,dc=org
objectClass: organizationalUnit
ou: People
dn: cn=jane,ou=People,dc=example,dc=org
objectClass: person
objectClass: inetOrgPerson
sn: doe
cn: jane
mail: janedoe@example.com
userpassword: foo
dn: cn=john,ou=People,dc=example,dc=org
objectClass: person
objectClass: inetOrgPerson
sn: doe
cn: john
userpassword: bar
`
c
:=
&
Config
{}
c
.
UserSearch
.
BaseDN
=
"ou=People,dc=example,dc=org"
c
.
UserSearch
.
NameAttr
=
"cn"
c
.
UserSearch
.
EmailSuffix
=
"test.example.com"
c
.
UserSearch
.
IDAttr
=
"DN"
c
.
UserSearch
.
Username
=
"cn"
tests
:=
[]
subtest
{
{
name
:
"ignoremailattr"
,
username
:
"jane"
,
password
:
"foo"
,
want
:
connector
.
Identity
{
UserID
:
"cn=jane,ou=People,dc=example,dc=org"
,
Username
:
"jane"
,
Email
:
"jane@test.example.com"
,
EmailVerified
:
true
,
},
},
{
name
:
"nomailattr"
,
username
:
"john"
,
password
:
"bar"
,
want
:
connector
.
Identity
{
UserID
:
"cn=john,ou=People,dc=example,dc=org"
,
Username
:
"john"
,
Email
:
"john@test.example.com"
,
EmailVerified
:
true
,
},
},
}
runTests
(
t
,
schema
,
connectLDAP
,
c
,
tests
)
}
func
TestGroupQuery
(
t
*
testing
.
T
)
{
schema
:=
`
dn: dc=example,dc=org
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment