Search code examples
c#.net.net-4.5claims-based-identity

AuthorizationContext.Principal is changing from ClaimsPrincipal to GenericPrincipal automatically


I dont know how come the context principle is changing in AuthorisationManager. My code is like

  public class AuthorisationManager : ClaimsAuthorizationManager
{
    public override bool CheckAccess(AuthorizationContext context)
    {
        var resource = context.Resource.First().Value;
        var action = context.Action.First().Value;
        return context.Principal.HasClaim(resource, action);
    }
    public override void LoadCustomConfiguration(System.Xml.XmlNodeList nodelist)
    {
        base.LoadCustomConfiguration(nodelist);
    }
}

I have list of items in GUI. It works fine first time but when I select second item the context.Principle is chnaged to GenericPrinciple.

Any idea will be helpfull on this.


Solution

  • OK - WPF.

    Yeah I vaguely remember that there is some "feature" in WPF around Thread.CurrentPrincipal.

    try

    Thread.CurrentPrincipal = principal
    
    AppDomain.CurrentDomain.SetThreadPrincipal(principal);
    

    IIRC you maybe have to do that in the App class (ctor?).