token已经是运行很广泛的认证方案了
在webapi下比较好理解,即
客户端发起请求需要携带token,如果没有,则去指定服务获取token,后继续完成请求,这一切都是在前端完成,并没有什么问题。
但是这个在aspx页面(即动态请求页面)中,需要使用token认证的话,有个问题
客户端发起请求的时候,此时没有token,
需要将用户向导至token获取页面token后再进行重定向至原访问页面的url,
整个过程会多跳转一次(即跳转获取token的url,然后token随响应的头部返回),
这个时候token已经随header回发给用户,但是怎样标识才能让后续的每次请求在header中都带上这个参数呢?
还有一个问题,如果是搜索引擎来了的话,那么按照这个逻辑,会不会对搜索引擎不友好?
此问题的背景
部分事业单位、政府类型的web服务,明明是个仅展示的站点(新闻资讯发布类型站点,用于公众展示信息,且非管理员端),却要求页面使用token(或防止非法请求)。
具体要求如下: 请求的页面必须携带唯一认证参数,如无该参数即为违法构造请求。
说一下思路吧,token以key-value的形式存到cookie里,例如DEMOTOKEN=888888888888,每次aspx请求都会自动带上,这个只要你设置好了就行。
然后就是验证思路,首先aspx的 Inherits 都会指向一个 cs 类,这个类是继承 Page 方法的,剩下的就是看下 Page 的生命周期,写个basePage的几类,里面重写请求前,请求后的方法,在里面实现设置cookie第一次设置和验证cookie的逻辑。验证不过就跳转到获取页面,然后带上redirectURL,获取页面设置好cookies之后再会跳回来。
微信授权基本上都是这个思路。
有啊,asp.net直接就有请求校验token,直接输出到form里,提交的时候会带上校验token,自动校验的
Html.AntiForgeryToken
刚才想了下这个是mvc的。。。webform里不一定能用,但大体思路差不多,应该是有现成的