Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Capture request IP Address in Web API Authentication Filter

I would like to capture the IP Address of the client that calls my Web API service. I am trying to capture that IP address in a custom Authentication Filter that I have created.

Is the request IP address available from the HttpActionContext ?

I cannot seem to find it.

Is the Authentication Filter the wrong place where to capture the IP address of the client making the request ?

like image 271
G-Man Avatar asked May 19 '15 20:05

G-Man


1 Answers

I recently found the following extension method for that:

public static string GetClientIpAddress(this HttpRequestMessage request)
{
    if (request.Properties.ContainsKey("MS_HttpContext"))
    {
        return IPAddress.Parse(((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress).ToString();
    }
    if (request.Properties.ContainsKey("MS_OwinContext"))
    {
        return IPAddress.Parse(((OwinContext)request.Properties["MS_OwinContext"]).Request.RemoteIpAddress).ToString();
    }
    return null;
}

You can now call:

HttpActionContext.Request.GetClientIpAddress();
like image 110
MichaelS Avatar answered Sep 29 '22 03:09

MichaelS