Vault
Automatic group mapping fails
Troubleshoot problems where the debugging data suggests a bad or nonexistent mapping between your Vault role and AD FS the Claim Issuance Policy.
Example debugging data
[DEBUG] auth.saml.auth_saml_1d2227e7: validating user context for role: api=callback role_name=default-saml
role="{
"token_bound_cidrs":null,
"token_explicit_max_ttl":0,
"token_max_ttl":0,
"token_no_default_policy":false,
"token_num_uses":0,
"token_period":0,
"token_policies":["default"],
"token_type":0,
"token_ttl":0,
"BoundSubjects":["*@example.com","*@ext.example.com"],
"BoundSubjectsType":"glob",
"BoundAttributes":{"http://schemas.xmlsoap.org/claims/Group":["VaultAdmin","VaultUser"]},
"BoundAttributesType":"string",
"GroupsAttribute":"groups"
}"
user context="{
"attributes":
{
"http://schemas.xmlsoap.org/claims/Group":["Domain Users","VaultAdmin"],
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress":["rs@example.com"]
},
"subject":"rs@example.com"
}"
Analysis
Use vault read
to review the current role configuration:
$ vault read auth/<SAML_PLUGIN_PATH>/role/<ADFS_ROLE>
Key Value
--- -----
bound_attributes map[http://schemas.xmlsoap.org/claims/Group:[VaultAdmin VaultUser]]
bound_attributes_type string
bound_subjects [*@example.com *@ext.example.com]
bound_subjects_type glob
groups_attribute groups
token_bound_cidrs []
token_explicit_max_ttl 0s
token_max_ttl 0s
token_no_default_policy false
token_num_uses 0
token_period 0s
token_policies [default]
token_ttl 0s
token_type default
The Vault role uses groups
for the group attribute, so Vault expects user
context in the SAML response to include a groups
attribute with the form:
user context="{
"attributes":
{
"groups":[<LIST_OF_BOUND_GROUPS>]",
...
}
}"
But the SAML response indicates the Claim Issuance Policy uses Group
for the
group attribute, so the user context uses Group
to key the bound groups:
user context="{
"attributes":
{
"http://schemas.xmlsoap.org/claims/Group":["Domain Users","VaultAdmin"],
...
},
"subject":"rs@example.com"
}"
Solution
The first option to resolve the problem is update group_attribute
for the
Vault role to use Group
:
$ vault write auth/<SAML_PLUGIN_PATH>/role/<ADFS_ROLE> \
groups_attribute=http://schemas.xmlsoap.org/claims/Group
For example:
$ vault write auth/saml/role/adfs-default \
groups_attribute=http://schemas.xmlsoap.org/claims/Group