I develop and maintain a client portal written in Perl / Catalyst. We use Catalyst authentication plugins (with an LDAP storage backend, combined with several deny_unless rules, to ensure that the right people have the correct group membership).
Often when managing client permissions, we need to check user preferences before we move on. Currently, our only resource is to reset the user password and enter the system independently, but this is less than ideal, especially if the user has already set their own passwords, etc.
My question is this: for Catalyst, does anyone come across a method of impersonating a user account in such a way that, given the correct super-administrator privileges, you can temporarily impersonate another account by checking the settings and then backtracking once done?
If not in Catalyst, how did people approach this in a different framework or in their own decisions? Admittedly, this is what introduces a potentially egregious attack vector for a web application, but if enforced, how do people approach the design for this? Maybe some serious cookie-session-fu? Or perhaps the actual system ID / effectiveID?
source share