Ios 向本机移动应用程序提供反伪造令牌

Ios 向本机移动应用程序提供反伪造令牌,ios,.net,asp.net-mvc,security,forms-authentication,Ios,.net,Asp.net Mvc,Security,Forms Authentication,我有一个ASP.NET WebApi解决方案,所有客户端都使用Forms Auth。我的MVC消费者正在使用以下各项: @Html.AntiForgeryToken() [System.Web.Http.HttpGet] [AllowAnonymous] [Route("api/getAntiForgeryToken/{oldCookieToken?}")] public HttpResponseMessage GetAntiForgeryToken(strin

我有一个ASP.NET WebApi解决方案,所有客户端都使用Forms Auth。我的MVC消费者正在使用以下各项:

@Html.AntiForgeryToken()
    [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;
    }
然后在我的所有API端点上,我通过
WebApiValidateAntiForgeryTokenAttribute
验证是否在标头中设置了令牌

在开发iOS应用程序时,我决定将Cookie作为身份验证机制进行维护。如何在iOS客户端应用程序中生成此令牌

更新

基于此,我做了以下工作:

@Html.AntiForgeryToken()
    [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;
    }
[System.Web.Http.HttpGet]
[异名]
[路由(“api/getAntiForgeryToken/{oldCookieToken?}”)]
公共HttpResponseMessage GetAntiForgeryToken(字符串oldCookieToken=null){
var模型=新的抗真菌剂DTO();
字符串newCookieToken;
字符串newFormToken;
反胃。GetTokens(oldCookieToken,OutNewCookietoken,OutNewFormToken);
model.CookieToken=newCookieToken;
model.FormToken=newFormToken;
var response=Request.CreateResponse(HttpStatusCode.OK,model);
AddCookies(new List(){new CookieHeaderValue(“\uu RequestVerificationToken”,model.CookieToken)});
返回响应;
}
尽管我不确定这种方法是否安全。我是否应该以某种方式验证请求令牌的客户端是移动应用程序