OAuth2授权页面state参数的设计
场景描述:
第三方应用:freeshare
账号系统:account
freeshare点击登录,跳转到account页面进行授权。
具体例子可以参考我们的freeshare系统:http://freeshare.free4lab.com/
- 原先的设计
进行授权的时候,传参数:client_id和redirect_uri,参数简单解释如下:
client_id:申请使用account登录时分配的appKey
redirect_uri:用户填写正确用户名密码后,授权返回的第三方应用的url地址
- 升级后的设计
最近参考新浪微博设计,加入了state参数
所以授权页面的url变成: https://account/login?client_id=***&redirect_uri=***&state=***
state参数的作用是:在回调时,会回传state参数给第三方应用,第三方应用的开发者可以验证state参数的有效性(也可以记录用户授权页面的位置)。
这个参数可以防止把第三方应用当成肉鸡对account系统进行的频繁OAuth第二流程的请求
否则很容易就能根据 http://freeshare/action?oauth_token=***进行攻击
新浪的api文档说:这个state参数可用于防止跨站请求伪造(CSRF)攻击,知道的朋友回复帖子说明下?我以上理解是否正确。
E-mail: huahuiyang@gmail.com
https://www.linkedin.com/in/huahuiyang/