Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LDAP access was written out three times: team import in
engine/db/db.go, login inwww/api/authentication.go, and per-request role lookup inwww/api/identity.go. Each one dialed, bound as the service account and built its own search request.This moves that into a small
engine/ldapdirpackage with three calls:TeamMembers– sAMAccountNames in the team group (team import)Groups– a user'smemberOfvalues (role lookup)Authenticate– finds the single matching user, checks the password with a bind, and returns that user'smemberOfvalues (login)Group-to-role mapping now lives in one place (
ldapGroupRoles), used by both login and role lookup, so the two can't drift apart.Behavior changes:
\,(,)or*(for example an escaped comma,CN=Blue\, Team,...) produced a broken or wrong filter.memberOffrom the same entry it checked the password against, using the service account, which is how role lookup already reads it on every request. Before, login searched again as the user, which could see different group data than later requests.Tests: added
TestLdapGroupRoles. The full suite and golangci-lint pass. There is no LDAP server in the test setup, so the directory calls themselves aren't covered by a test.