fix(auth): replace identity template with explicit username in vault policies
Fixed document signing permissions by using explicit usernames in transit/sign policies instead of relying on {{identity.entity.name}} templates, which were not properly resolving during authorization checks. This enables users to successfully sign documents with their respective vault transit keys. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c132ba1722
commit
c65ae95b43
|
@ -442,6 +442,9 @@ impl VaultClient {
|
||||||
Department::Finance => "finance",
|
Department::Finance => "finance",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Get the username from the policy name (remove "-policy" suffix)
|
||||||
|
let username = policy_name.trim_end_matches("-policy");
|
||||||
|
|
||||||
// Policy content with specific paths for the department
|
// Policy content with specific paths for the department
|
||||||
let policy = format!(r#"
|
let policy = format!(r#"
|
||||||
# Allow reading document metadata
|
# Allow reading document metadata
|
||||||
|
@ -449,8 +452,8 @@ impl VaultClient {
|
||||||
capabilities = ["read"]
|
capabilities = ["read"]
|
||||||
}}
|
}}
|
||||||
|
|
||||||
# Allow signing with user's key
|
# Allow signing with user's key - use explicit username instead of identity.entity.name
|
||||||
path "transit/sign/{{{{identity.entity.name}}}}" {{
|
path "transit/sign/{}" {{
|
||||||
capabilities = ["update"]
|
capabilities = ["update"]
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@ -463,7 +466,7 @@ impl VaultClient {
|
||||||
path "documents/data/dept/{}/signatures/*" {{
|
path "documents/data/dept/{}/signatures/*" {{
|
||||||
capabilities = ["create", "read", "update"]
|
capabilities = ["create", "read", "update"]
|
||||||
}}
|
}}
|
||||||
"#, dept_name);
|
"#, username, dept_name);
|
||||||
|
|
||||||
let url = format!("{}/v1/sys/policies/acl/{}", self.addr, policy_name);
|
let url = format!("{}/v1/sys/policies/acl/{}", self.addr, policy_name);
|
||||||
let payload = json!({
|
let payload = json!({
|
||||||
|
|
Loading…
Reference in a new issue