繁体   English   中英

身份验证中访问令牌的使用

[英]access token usage in authentication

我不了解在身份验证中具有访问令牌的意义。 以下是我的一段解释,但我仍然感到困惑。 由于每个api调用仍会进入db查找令牌,因此每个http请求的用户名和密码检查有何不同?

您可以在RESTful服务中使用“ get_access_token”功能,而不是强制客户端随每个请求发送用户名和密码,该函数采用用户名和密码并以令牌进行响应,令牌是一种独特的加密哈希,具有一定的到期时间与之相关的日期。 这些令牌与每个用户一起存储在数据库中。 然后,客户端在后续请求中发送访问令牌。 然后将针对数据库而不是用户名和密码来验证访问令牌。

使用访问令牌会限制用户名和密码在网络上的使用和发送时间。

您要存储和传输用户名和密码,SSN或其他敏感数据多少次? 您是否希望每一个请求都这样?

首先,通常通过检查数字签名来验证访问令牌,这不需要接收服务与发行服务器进行对话。 客户端一次获得访问令牌并使用它直到过期。

但是,即使每次调用都必须对照数据库检查令牌(例如,当使用参考令牌时),仍然比在每次调用中发送用户名和密码更喜欢令牌。 他们消除了客户端将密码保存在内存中(或其他地方)的需求,因为密码很容易被盗取。

(1)访问令牌比您的密码敏感。 访问令牌通常会在很短的时间后过期(这是Oauth威胁模型的要求),而密码往往是长期的。 如果有人抢了您的访问令牌,那么他们所能造成的损害就非常有限。 如果他们抓住了您的密码,那么他们将遭受很多损害。 特别是在多个站点上使用相同或相关的密码时。

(2)如果服务器安全地实施了密码验证,则他们应该使用慢速功能(如PBKDF2,bcrypt或scrypt)来验证您的密码。 这些功能的设计速度很慢,因此,如果有人可以访问数据库,则他们将无法撤消许多密码:请参阅我们的密码哈希值不值一提 考虑到密码检查应该很慢,我们不想经常这样做! 但是,访问令牌的验证要快得多。

(3)授予您访问资源的系统(“资源提供者”)可能与检查您的身份的系统(“身份提供者”)不同。 例如,包括StackOverflow在内的许多网站都允许您使用Gmail帐户登录。 在这种情况下,Google是身份提供者,而StackOverflow是资源提供者。 您是否真的要向StackOverflow提供您的Gmail密码? 我希望不是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM