Impersonation Delegation
From Guidance Share
Jump to navigationJump to search
Context
Your application needs to access a downstream resource, typically a database, and you need to decide where to authorize the original caller who initiates the operation and what account to use to access the downstream resource.
Problem
- Where to perform authorization and what account(s) to use access the downstream resource.
Forces
- You want to use OS auditing to track an individual's operations in the database.
- You want granular, per-user authorization in the database.
- You don't want to trust the front-end application to perform user authorization.
- Your application will scale enough to satisfy your requirements even without connection pooling.
Solution
- Use an authentication mechanism that allows you to obtain delegatable credentials.
- Impersonate the original caller's identity and make downstream calls using that identity.
- Configure per-user ACLs at the back-end (e.g. within the database)