http://localhost:1075/api/customer/Getcustomer?id=1
1.一个url获取永久用户配置文件信息的结果..下面是为android application.but调用并设计的控制器code.This web api,即使我通过浏览器或邮递员工具调用它,它也会给出结果。那么安全在哪里??如果任何人知道这个网址,那么他就可以访问我们所有的敏感信息。请建议我如何保护我的web api...
public customerCollection Getcustomer(int id)
{
db.Configuration.ProxyCreationEnabled = false;
var customer = (from c in db.customers
where c.customerID == id
select c).ToArray();
var result = new customerCollection();
if (customer == null)
{
result.status = "failed";
}
result.status = "success";
result.customerArray = customer;
return result;
}回应是
{
"customerArray": [
{
"customerID": 1,
"cname": "Yogesh",
"cmobile": "9970714878",
"cemail": "yogeshkhurpe11@gmail.com",
"cpassword": "yogesh",
"addressLine1": "balaji hostel",
"addressLine2": "Jadhav nagar",
"area": "Vadgoan",
"pincode": "411041",
"cimage": "Na",
"cdate": "2017-06-28T14:16:03",
"cstatus": "active",
"orders": []
}
],
"status": "success"
}发布于 2017-06-29 15:09:02
下面是使用身份验证的逐步方法。
您应该在WebAPI中创建一个Authorize属性,以便首先对传入的请求进行授权。
首先,将使用您的API的用户将使用用户名和密码对自己进行身份验证,一旦此过程完成,并且用户已获得授权,您应该向用户返回一个令牌,以供进一步请求。此令牌可以是加密的时间或GUID或任何您希望了解的有关特定用户的信息,即您为其生成该令牌的用户。您可以将该令牌保存到数据库中以供将来使用。
现在,当用户下次尝试访问您的API时,他将在该api请求的标头部分中发送令牌。如果令牌有效,则应返回结果,否则应返回一个错误,说明令牌无效。
谢谢,希望这对你有帮助!
发布于 2017-06-29 15:16:40
尝试以下逻辑。首先,在WebAPI中创建一个Authorize属性。使用api函数上面的Authorize属性来保护api
public class AuthenticationFilter : AuthorizationFilterAttribute
{
/// <summary>
/// read requested header and validated
/// </summary>
/// <param name="actionContext"></param>
public override void OnAuthorization(HttpActionContext actionContext)
{
var identity = FetchFromHeader(actionContext);
if(identity != null)
{
//get the user based on the identity
var user=TokenService.getUserFromToken(identity);
if (user)
{
CurrentThread.SetPrincipal(new GenericPrincipal(new GenericIdentity(user), null), null, null);
}
else
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
return;
}
}
else
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest);
return;
}
base.OnAuthorization(actionContext);
}
/// <summary>
/// retrive header detail from the request
/// </summary>
/// <param name="actionContext"></param>
/// <returns></returns>
private string FetchFromHeader(HttpActionContext actionContext)
{
string requestToken = null;
var authRequest = actionContext.Request.Headers.Authorization;
if (authRequest != null && !string.IsNullOrEmpty(authRequest.Scheme) && authRequest.Scheme == "Basic")
requestToken = authRequest.Parameter;
return requestToken;
}
}https://stackoverflow.com/questions/44818043
复制相似问题