A solução é a seguinte: (não limpa, mas funcionando)
1) escreve o próprio IHttpModule, contendo:
class LoginModule {
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(UglyHack);
}
void UglyHack(object sender, EventArgs e)
{
HttpCookie wannabe = (HttpContext.Current.Request.Cookies["_sp_admin_wanna_be_user"]);
if (wannabe != null && SPContext.Current.Web.CurrentUser.IsSiteAdmin)
{
SPWeb cw = SPContext.Current.Web;
typeof(SPWeb).GetField("m_CurrentUser", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(
SPContext.Current.Web,
cw.AllUsers[wannabe.Value]);
}
}
}
2) Assine
3) GAC
4) para web.config ().
Voila! Você é o cara. :) (claro que adicionei lógica para adicionar configuração de cookies ao menu, segurança, etc.)