Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a ClaimsPrincipal that has Identity.Authenticated set to true?

I have the following method:

        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (Composite.C1Console.Security.UserValidationFacade.IsLoggedIn())
                SetPrincipal(request, new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Role, "Administrator") },)));
            var test = request.GetClaimsPrincipal();
            return base.SendAsync(request, cancellationToken);
        }

my problem is that if i inspect the test.Identity.IsAuthenticated is has not been set to true. This is just some test code to figure out how. What am I missing.

like image 769
Poul K. Sørensen Avatar asked Jul 02 '13 12:07

Poul K. Sørensen


2 Answers

You need to specify a ClaimsIdentity instance to the ClaimsPrincipal constructor that specifies a authenticationType such as "Basic". Claims can be null.

var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic"));
var isAuthenticated = principal.Identity.IsAuthenticated; // true
like image 70
Fred Avatar answered Sep 20 '22 10:09

Fred


You need to set an authentication type in the ClaimsIdentity ctor.

like image 25
leastprivilege Avatar answered Sep 20 '22 10:09

leastprivilege