ASP.NET Core JWT Bearer Token Custom Validation

前端 未结 2 963
自闭症患者
自闭症患者 2020-12-08 03:10

After a lot of reading, i have found a way to implement a custom JWT bearer token validator as below.

Starup.cs Codes:

public void Conf         


        
2条回答
  •  天涯浪人
    2020-12-08 03:55

    For custom JWT validator, I created a JWTCosumerProvider class inhert to IOAuthBearerAuthenticationProvider. And implement the ValidateIdentity() method to check the identity Claim which i stored the client IP address at first place,then compare to current request Id address after.

    public Task ValidateIdentity(OAuthValidateIdentityContext context)
        {
    
            var requestIPAddress = context.Ticket.Identity.FindFirst(ClaimTypes.Dns)?.Value;
    
            if (requestIPAddress == null)
                context.SetError("Token Invalid", "The IP Address not right");
    
            string clientAddress = JWTHelper.GetClientIPAddress();
            if (!requestIPAddress.Equals(clientAddress))
                context.SetError("Token Invalid", "The IP Address not right");
    
    
            return Task.FromResult(null);
        }
    
    
    

    JWTHelper.GetClientIPAddress()

    internal static string GetClientIPAddress()
        {
            System.Web.HttpContext context = System.Web.HttpContext.Current;
            string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    
            if (!string.IsNullOrEmpty(ipAddress))
            {
                string[] addresses = ipAddress.Split(',');
                if (addresses.Length != 0)
                {
                    return addresses[0];
                }
            }
    
            return context.Request.ServerVariables["REMOTE_ADDR"];
        }
    

    hope this help!

    提交回复
    热议问题