OAuth 2.0状态参数

时间:2018-05-02 17:39:04

标签: oauth-2.0 ebay-api

我正在使用当前Meteor项目应用程序上的OAuth使用eBay API。

应用程序的某个部分我可以创建一个易趣帐户个人资料,并为帐户指定自定义值(例如对其进行昵称等)。这是我启动OAuth登录重定向过程的地方。

我的问题是关于令牌请求中的'state'参数。我知道这是为了帮助防止CSRF,但我是否必须这样使用它? “州”确实似乎是可选的。

假设我想将另一个值传递给请求调用,例如字符串'eBay Seller',并期望在响应中返回相同的字符串。我想使用该值来帮助我的应用确定将返回的令牌分配到哪个帐户(根据启动重定向链接的帐户配置文件)。

'state'是否是一个传递变量的有效位置,我希望该变量完全按照发送的方式返回?我考虑使用Session变量来处理这种情况,但很快意识到这不起作用,因为OAuth进程将我带到了项目的域之外。

OAuth是否支持传递预期会被发送的变量?将我的变量发送为“状态”允许或甚至推荐(或绝对不推荐?)是否有更好的方法来实现我想要做的不涉及更新数据库值的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将您想要的内容发送为state。你应该尽量确保它不可猜测,以减轻CSRF攻击。

如果您想要返回有用信息,例如易趣卖家'然后包括CSRF的内容(例如会话密钥id的哈希)文本&ebay卖家'并划定它们,例如

2CF24DBA5FB0A30E26E83B2AC5B9E29E1B161E5C1FA7425E73043362938B9824|ebay seller

现在你拥有两全其美:有用的状态信息+ CSRF保护。 您的重定向端点逻辑可以检查会话ID匹配的哈希值,并确认初始请求中的帐户类型。