Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Django&;从基本身份验证切换到OAuth 2.0;味觉型_Ios_Django_Authentication_Oauth_Tastypie - Fatal编程技术网

Ios Django&;从基本身份验证切换到OAuth 2.0;味觉型

Ios Django&;从基本身份验证切换到OAuth 2.0;味觉型,ios,django,authentication,oauth,tastypie,Ios,Django,Authentication,Oauth,Tastypie,我是一名自学成才的后端工程师,所以我一直在学习这些东西。很长一段时间以来,我一直在为我的用户使用基本身份验证。只要您有正确的用户名和密码,就可以访问所有的tastypieapi资源 许多开发人员建议不要使用这种方法,因为每个请求都包含用户名和密码。任何具备适当技能的人都可以监听我的iOS应用程序和Django服务器之间的连接,并获取他们的密码 我不想让我的用户的凭据处于危险之中,所以我想实现一种更安全的身份验证方法。我读了很多书,发现OAuth2.0采用了整个令牌方法。将用户名和密码发送到服务器

我是一名自学成才的后端工程师,所以我一直在学习这些东西。很长一段时间以来,我一直在为我的用户使用基本身份验证。只要您有正确的用户名和密码,就可以访问所有的tastypieapi资源

许多开发人员建议不要使用这种方法,因为每个请求都包含用户名和密码。任何具备适当技能的人都可以监听我的iOS应用程序和Django服务器之间的连接,并获取他们的密码

我不想让我的用户的凭据处于危险之中,所以我想实现一种更安全的身份验证方法。我读了很多书,发现OAuth2.0采用了整个令牌方法。将用户名和密码发送到服务器的唯一时间是他们请求访问令牌时

在给出访问令牌(每个用户将拥有一个唯一的访问令牌)后,该令牌用于身份验证,而不是用户名和密码

这样,任何人都只会看到令牌。如果令牌被公开,我可以轻松地删除旧令牌并为用户生成新令牌

除此之外,我还希望这样做,只有来自iOS应用程序的请求才能访问Tastype资源。(我正在考虑为我的应用程序生成一个应用程序密钥,如果第三方服务想要使用该服务,我也会授予他们一个唯一的密钥)


如何在Django设置中实现这一点?我可以用OAuth2.0来做这个吗?如果我实施了此设置,如何使攻击者无法获得应用程序令牌?

请看一下此项目-

而且它是

这是一个伟大的、实时的项目,最新版本的Django


它将Django的social auth与多种平台集成。

我不确定Django方面的情况,但我使用了GTMOAuth2,它将Google auth用于iOS应用程序,也许你可以将其作为一种好的第三方身份验证方法。该链接是使攻击者无法获取应用程序令牌的唯一真正方法,即避免生成它们。您的软件堆栈中的任何一点都可能有一个漏洞,哎呀,您的所有令牌都被破坏了。关键是您使用身份验证方法保护的数据是否值得尝试破坏它。如果它是一个简单的网站,那么为什么不继续使用
Basic Auth
。但是如果你真的喜欢OAuth2,这是一个简单的操作方法。@kroolik我理解你的意思,但是这种方法有一个小问题。当然,这可能是一个简单的网站,没有人关心。但是任何使用WireShark之类的工具的人都可以嗅探在应用程序和服务器之间发送的数据包。大多数用户对其所有在线帐户使用相同的密码。这就是为什么拥有基本身份验证不公平的原因。@RiegieGodwin,如果有人在使用WireShark,那么他们可以嗅探你的应用程序id、密码或访问令牌。如果您担心窃听,请尝试使用SSL。@kroolik这是一个非常好的建议,我将尝试SSL方法,它似乎更有希望