Here, I will explain how to maintain security in webapi
Step : 1 Create a method for validate loginname and tokenkey. if exists then return true otherwise return false.
Step : 2 add a class, which is used as Authorization filter. The class BasicAuthenticationAttribute inherits from BasicAuthenticationAttribute abstarct class.
Step : 3 Now we need to register authorization filter. we can register at controller level.
Step: 4 Call Web API using AJAX request.
Step : 1 Create a method for validate loginname and tokenkey. if exists then return true otherwise return false.
public static bool Vaidatecredentials(string loginname, string tokenkey)
{
// Check if it is valid credential
if(true)//Check login name and token key exists in DB(loginname, password))
{
return true;
}
else
{
return false;
}
}
Step : 2 add a class, which is used as Authorization filter. The class BasicAuthenticationAttribute inherits from BasicAuthenticationAttribute abstarct class.
public class BasicAuthenticationAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if (actionContext.Request.Headers.Authorization == null)
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
else
{
// accept header parameters
string Parameters = actionContext.Request.Headers.Authorization.Parameter;
// Gets loginname and tokenkey
string loginname = Parameters.Split(':')[0];
string tokenkey = Parameters.Split(':')[1];
// Validate loginname and tokenkey
if (!Vaidatecredentials(loginname, tokenkey))
{
// returns unauthorized error 401
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
}
}
base.OnAuthorization(actionContext);
}
}
Step : 3 Now we need to register authorization filter. we can register at controller level.
[BasicAuthentication]
public class BlogController : ApiController
{
// Add your code here
}
Step: 4 Call Web API using AJAX request.
$.ajax({
url: 'http://localhost:9000/api/dcs',
type: "POST",
contentType: "application/json",
data: JSON.stringify(testdata),
dataType: "json",
headers: { 'Authorization' :'Basic ' + loginname + ':' + tokenkey) },
success: function (result) {
},
error: function (err) {
}
});
Comments
Post a Comment