Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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
Android 在Django OAuth2 API中获取授权密钥,无需客户端加密_Android_Django_Oauth 2.0 - Fatal编程技术网

Android 在Django OAuth2 API中获取授权密钥,无需客户端加密

Android 在Django OAuth2 API中获取授权密钥,无需客户端加密,android,django,oauth-2.0,Android,Django,Oauth 2.0,我试图让OAuth2与Django一起工作,以允许访问API,而不必使用Django凭据登录。我使用django-tastypie作为API,使用django-oauth2-provider作为oauth2身份验证。这一切都是用柱子作为指引绑在一起的 我已经使用了基本的OAuth工作流程(与上面博客文章的“测试提供者”部分完全相同),但显然使用了我自己的模型和用户名/密码。我现在需要在安卓系统上实现这一点,但我遇到了一个客户机秘密的障碍 建议不要将客户端的秘密存储在android设备上或传输到a

我试图让OAuth2与Django一起工作,以允许访问API,而不必使用Django凭据登录。我使用django-tastypie作为API,使用django-oauth2-provider作为oauth2身份验证。这一切都是用柱子作为指引绑在一起的

我已经使用了基本的OAuth工作流程(与上面博客文章的“测试提供者”部分完全相同),但显然使用了我自己的模型和用户名/密码。我现在需要在安卓系统上实现这一点,但我遇到了一个客户机秘密的障碍

建议不要将客户端的秘密存储在android设备上或传输到android设备上,因为它并不总是安全的。我发现这篇文章建议,对于移动设备,有一个OAuth流,允许OAuth身份验证,而不必使用客户机密钥(在方便地命名为“移动应用”的部分下)。我可以使用以“/oauth2/authorize?response\u type=code&client\u id=xxxxxxxxxxxxxx”结尾的url获取授权代码,但当我尝试使用带有返回代码的get authorization\u令牌时,我仍然必须提供一个client\u id和client\u secret。这似乎是因为django-oauth2-provider总是需要client\u id和client\u secret

那么,我的问题是,我如何获得授权令牌,而不必在Android设备上存储客户端密钥或将客户端密钥作为POST数据发送?我发现了一个类似的问题,它帮助我找到了如何取回授权代码,但我找不到任何关于在没有客户端密码的情况下获取授权令牌的信息


如果这是不可能的,我如何才能自动获取设备的客户端id/客户端密码,以及保护它的建议是什么?

您是否最终找到了一个解决方案,在不发送django-oauth2-provider中的客户端密码的情况下获取令牌?不,我没有。我最终使用了普通的网络视图和HTTP授权来实现这个功能。有什么消息吗?我也遇到了同样的问题,我不敢相信没有线索。我已经读了两天了,但找不到任何东西。我从来没有这样做过,而是使用了这样的工作流:@dabad我从来没有这样做过,而是使用了一个工作流,用户最初登录到远程API以获取他们的机密,然后在后续的同步中,它会提示输入用户凭据并发送客户端机密请求,但这不是最优的。这个项目最终还是被废弃了。FWIW,我认为一个简单的OAuth 1 API密钥是更好的选择,因为它不需要多次客户端凭据(当您获得密钥时),并且它允许为该密钥设置权限。您还可以查看Kerberos和SPNEGO,但这涉及更多内容。