【发布时间】:2019-04-08 20:50:24
【问题描述】:
移动应用程序的开发人员正在使用 OAuth 2.0 令牌的超时期限来检查应用程序何时必须重新向服务器进行身份验证。
这与我对正确使用 OAuth 2.0 令牌的理解相冲突,尽管我不确定自己是否正确。
我的理解:
OAuth 不是关于身份验证,而是关于授权,例如该设备可以代表用户访问服务器上的某些资源吗?身份验证在逻辑上先于授权,是关于确认用户就是他们所说的身份。
因此,用户提供凭据(用户名和密码)并且服务器验证是的,该用户是 Bob。
Bob 已登录的应用程序希望访问 Bob 已通过身份验证的服务器上的某些资源,例如来自 API 的数据。所以应用程序请求一个 OAuth 令牌并被授予,它的属性之一是它存在多长时间。应用程序和服务器交换密钥,应用程序和服务器之间的数据使用密钥加密。
读取明文通信的入侵者将无法在没有密钥的情况下对其进行解码。但是,如果入侵者能够获得他们将能够获得的密钥。
这就是 OAuth 令牌生命周期结束的地方。我们不想永远使用相同的 OAuth 令牌(密钥),因为如果入侵者能够获得该令牌,他们就可以永远破坏我们的通信。但是,如果我们每 x 小时刷新一次令牌,那么它们只能在 x 小时(比如说 2 小时)内使信息失效。
我认为 OAuth 令牌到期时间不应与用户保持身份验证的时间长短相关。这完全取决于开发人员。在我们的例子中,如果用户有一些设备安全性(例如密码),那么我们可以让他们长时间保持身份验证(例如几个月)。如果他们没有设备安全性,那么我想强制他们在一段合理的不活动时间(可能是 24 小时)后重新进行身份验证。
这是否正确,如果不是,是什么部分。
提前致谢。
布莱恩
【问题讨论】:
标签: authentication oauth-2.0 authorization