我有一个ASP.NET WebApi解决方案,所有客户都使用 Forms Auth 。我的MVC消费者正在使用以下内容:
@Html.AntiForgeryToken()
然后在我的所有API端点上,我通过WebApiValidateAntiForgeryTokenAttribute
验证是否在标头中设置了令牌。
在开发我的iOS应用程序时,我决定将cookie作为auth机制进行维护。如何在iOS客户端应用程序中生成此令牌?
更新
根据此post,我完成了以下工作:
[System.Web.Http.HttpGet]
[AllowAnonymous]
[Route("api/getAntiForgeryToken/{oldCookieToken?}")]
public HttpResponseMessage GetAntiForgeryToken(string oldCookieToken = null) {
var model = new AntiforgeryDto();
string newCookieToken;
string newFormToken;
AntiForgery.GetTokens(oldCookieToken, out newCookieToken, out newFormToken);
model.CookieToken = newCookieToken;
model.FormToken = newFormToken;
var response = Request.CreateResponse(HttpStatusCode.OK, model);
response.Headers.AddCookies(new List<CookieHeaderValue>(){ new CookieHeaderValue("__RequestVerificationToken", model.CookieToken)});
return response;
}
虽然我不确定这种方法是否安全。我应该以某种方式验证请求令牌的客户端是移动应用程序吗?