我是一名自学成才的后端工程师,所以我正在学习所有这些东西。很长一段时间以来,我一直在为我的用户使用基本身份验证。只要您拥有正确的用户名和密码,就可以访问所有 Tastypie API 资源。
许多开发人员建议不要使用这种方法,因为每个请求都包含用户名和密码。任何具有适当技能的人都可以监听我的 iOS 应用程序和我的 Django 服务器之间的连接并获取他们的密码。
我不想让我的用户的凭据处于危险之中,所以我想实施一种更安全的身份验证方式。我一直在做大量的阅读,并遇到了具有完整令牌方法的 OAuth 2.0。将用户名和密码发送到服务器的唯一时间是它们请求访问令牌时。
给出访问令牌后(每个用户将拥有一个唯一的访问令牌),该令牌用于身份验证,而不是用户名和密码。
这样,任何收听的人都只会看到令牌。如果令牌暴露,我可以轻松删除旧令牌并为用户生成新令牌。
除此之外,我想让它只有来自我的 iOS 应用程序的请求才能访问美味的资源。(我正在考虑为我的应用程序生成一个应用程序密钥,如果第三方服务想要使用该服务,我也会授予他们一个唯一的密钥)
如何在我的 Django 设置中实现这一点?我可以使用 OAuth2.0 来做到这一点吗?如果我实现了这个设置,我怎样才能让攻击者无法获取应用程序令牌?