Quantcast
Channel: Security
Viewing all articles
Browse latest Browse all 4737

Mock specific claim and specific role using et Asp.net identity

$
0
0

Hi, 

I want to moq  specific claim and specific role using  et Asp.net identity 

public static ClaimsPrincipal MockIdentity(int userId, string username, List<Claim> userClaims,
			bool isAuthenticated = true, string[] userRoles = null, Claim ClaimToVerify = null)
		{
			Mock<GenericIdentity> mockGenericIdentity = new Mock<GenericIdentity>(username);
			mockGenericIdentity.Setup(x => x.Claims).Returns(userClaims);
			mockGenericIdentity.Setup(x => x.HasClaim(c => c.Type == ClaimToVerify.Type && c.Value == ClaimToVerify.Value)).Returns(true);
			mockGenericIdentity.Setup(x => x.IsAuthenticated).Returns(isAuthenticated);

			mockGenericIdentity.Setup(x => x.IsAuthenticated).Returns(isAuthenticated);

			Mock<ClaimsPrincipal> mockClaimsPrincipal = new Mock<ClaimsPrincipal>(mockGenericIdentity.Object);
			mockClaimsPrincipal.Setup(x => x.Identity.IsAuthenticated).Returns(isAuthenticated);
			mockClaimsPrincipal.Setup(x => x.Identity.Name).Returns(username);

			mockClaimsPrincipal.Setup(x => x.Claims).Returns(userClaims);
			mockClaimsPrincipal.Setup(x => x.IsInRole("admin")).Returns(true);
			return mockClaimsPrincipal.Object;
		}

principal.HasClaim(x => x.Type == ClaimType && x.Value == ClaimValue)))    returns always false, why

public override Task OnAuthorizationAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
		{
			var principal = actionContext.RequestContext.Principal as ClaimsPrincipal;

			if (!principal.Identity.IsAuthenticated)
			{
				actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
				return Task.FromResult<object>(null);
			}

			if (Roles.Any(r => !principal.IsInRole(r)))
			{
				actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
				return Task.FromResult<object>(null);
			}

			if (!(principal.HasClaim(x => x.Type == ClaimType && x.Value == ClaimValue)))
			{
				actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
				actionContext.Response.Headers.Add("WWW-Authenticate", "Bearer");
				return Task.FromResult<object>(null);
			}

			//User is Authorized, complete execution
			return Task.FromResult<object>(null);
		}

Regards


Viewing all articles
Browse latest Browse all 4737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>