首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Winform和WebAPI中处理WebAPI令牌

在Winform和WebAPI中处理WebAPI令牌
EN

Stack Overflow用户
提问于 2013-01-22 20:53:42
回答 1查看 1.9K关注 0票数 3

在非浏览器客户端调用时,在具有ValidateAntiForgeryTokenAttribute属性的方法上处理防伪的最佳方法是什么,比如WinForm

根据我所知道的,下面是防伪的工作原理:

  1. 将隐藏的输入字段添加到页面中。
  2. 名称相同的cookie也会发送给客户端。
  3. 在下一个请求中,cookie和隐藏输入字段都被发送到服务器。服务器调用AntiForgery.Validate(token, cookie)以确认请求是合法的。

在一个网络应用程序中,所有的功能都很好。它似乎在WinForm中不起作用。以下是我所做的:

  1. 使用HttpClient,我可以访问包含令牌的页面。
  2. 我解析页面并获取隐藏的输入字段。我也会捡起饼干。
  3. 我把饼干递给我。在此基础上,我添加了一个来自隐藏字段的值的新头__RequestVerificationToken
  4. 我进入服务器代码。
  5. AntiForgery.Validate(xx,yy)失败时出错:是为用户X提供的防伪令牌,但当前用户是Y.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 21:51:58

我想通了。它需要先执行表单身份验证,然后在随后的WebAPI调用中传递cookie。下面是修改后的流程:

1)使用HttpWebRequest (GET)加载登录表单

2)使用凭据在登录表单上发布信息。在cookiecontainer中提供HttpWebRequest

3)烹饪器现在包含Auth和__RequestVerificationToken

4)从后续的GET,甚至从登录结果的输出中获取__RequestVerificationToken

5)对于WebAPI Post呼叫,按原样传递炊具。还包括具有prev步骤值的 __RequestVerificationToken。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14467804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档