Skip to content

Commit

Permalink
auth/ldap: add username_as_alias config flag (#14324) (#14500)
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonodonnell committed Mar 15, 2022
1 parent d0fa460 commit ae06a8e
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 0 deletions.
1 change: 1 addition & 0 deletions builtin/credential/ldap/backend_test.go
Expand Up @@ -1002,6 +1002,7 @@ func TestLdapAuthBackend_ConfigUpgrade(t *testing.T) {
CaseSensitiveNames: falseBool,
UsePre111GroupCNBehavior: new(bool),
RequestTimeout: cfg.RequestTimeout,
UsernameAsAlias: false,
},
}

Expand Down
4 changes: 4 additions & 0 deletions builtin/credential/ldap/path_login.go
Expand Up @@ -100,6 +100,10 @@ func (b *backend) pathLogin(ctx context.Context, req *logical.Request, d *framew
},
}

if cfg.UsernameAsAlias {
auth.Alias.Name = username
}

cfg.PopulateTokenAuth(auth)

// Add in configured policies from mappings
Expand Down
3 changes: 3 additions & 0 deletions changelog/14324.txt
@@ -0,0 +1,3 @@
```release-note:improvement
auth/ldap: Add username_as_alias configurable to change how aliases are named
```
12 changes: 12 additions & 0 deletions sdk/helper/ldaputil/config.go
Expand Up @@ -101,6 +101,12 @@ Default: cn`,
},
},

"username_as_alias": {
Type: framework.TypeBool,
Default: false,
Description: "If true, sets the alias name to the username",
},

"userattr": {
Type: framework.TypeString,
Default: "cn",
Expand Down Expand Up @@ -231,6 +237,10 @@ func NewConfigEntry(existing *ConfigEntry, d *framework.FieldData) (*ConfigEntry
cfg.AnonymousGroupSearch = d.Get("anonymous_group_search").(bool)
}

if _, ok := d.Raw["username_as_alias"]; ok || !hadExisting {
cfg.UsernameAsAlias = d.Get("username_as_alias").(bool)
}

if _, ok := d.Raw["url"]; ok || !hadExisting {
cfg.Url = strings.ToLower(d.Get("url").(string))
}
Expand Down Expand Up @@ -369,6 +379,7 @@ type ConfigEntry struct {
GroupFilter string `json:"groupfilter"`
GroupAttr string `json:"groupattr"`
UPNDomain string `json:"upndomain"`
UsernameAsAlias bool `json:"username_as_alias"`
UserAttr string `json:"userattr"`
Certificate string `json:"certificate"`
ClientTLSCert string `json:"client_tls_cert`
Expand Down Expand Up @@ -418,6 +429,7 @@ func (c *ConfigEntry) PasswordlessMap() map[string]interface{} {
"use_token_groups": c.UseTokenGroups,
"anonymous_group_search": c.AnonymousGroupSearch,
"request_timeout": c.RequestTimeout,
"username_as_alias": c.UsernameAsAlias,
}
if c.CaseSensitiveNames != nil {
m["case_sensitive_names"] = *c.CaseSensitiveNames
Expand Down
1 change: 1 addition & 0 deletions sdk/helper/ldaputil/config_test.go
Expand Up @@ -163,6 +163,7 @@ var jsonConfigDefault = []byte(`
"tls_max_version": "tls12",
"use_token_groups": false,
"use_pre111_group_cn_behavior": null,
"username_as_alias": false,
"request_timeout": 90,
"case_sensitive_names": false
}
Expand Down
4 changes: 4 additions & 0 deletions website/content/api-docs/auth/ldap.mdx
Expand Up @@ -83,6 +83,8 @@ This endpoint configures the LDAP auth method.
`groupfilter` in order to enumerate user group membership. Examples: for
groupfilter queries returning _group_ objects, use: `cn`. For queries
returning _user_ objects, use: `memberOf`. The default is `cn`.
- `username_as_alias` `(bool: false)` - If set to true, forces the auth method
to use the username passed by the user as the alias name.

@include 'tokenfields.mdx'

Expand Down Expand Up @@ -111,6 +113,7 @@ $ curl \
"tls_max_version": "tls12",
"tls_min_version": "tls12",
"url": "ldaps://ldap.myorg.com:636",
"username_as_alias": false,
"userattr": "samaccountname",
"userdn": "ou=Users,dc=example,dc=com"
}
Expand Down Expand Up @@ -154,6 +157,7 @@ $ curl \
"tls_min_version": "tls12",
"upndomain": "",
"url": "ldaps://ldap.myorg.com:636",
"username_as_alias": false,
"userattr": "samaccountname",
"userdn": "ou=Users,dc=example,dc=com"
},
Expand Down
5 changes: 5 additions & 0 deletions website/content/docs/auth/ldap.mdx
Expand Up @@ -141,6 +141,11 @@ _Note_: When using _Authenticated Search_ for binding parameters (see above) the

Use `vault path-help` for more details.

### Other

- `username_as_alias` (bool, optional) - If set to true, forces the auth method to use the username passed by the user as the alias name.


## Examples:

### Scenario 1
Expand Down

0 comments on commit ae06a8e

Please sign in to comment.