Android手机上的OAuth安全问题?

Android手机上的OAuth安全问题?,android,security,mobile,oauth,token,Android,Security,Mobile,Oauth,Token,我正在编写一个客户端应用程序,它将在Android手机上运行,并代表用户与OAuth服务器交互。我在web服务器上运行OAuth服务器端代码,用于在与远程OAuth服务器握手时维护OAuth会话详细信息。现在,我正在争论如何最好地处理智能手机客户端的问题 对于这个问题,我们假设在过去,在远程OAuth服务器登录用户并授予我的应用程序访问权限之后,我收到了一个由远程OAuth服务器授予我的访问令牌。我们还假设它是一个“撤销前有效”的访问令牌 当然,主要关注的是实现一些不会让用户处于风险中的东西。最

我正在编写一个客户端应用程序,它将在Android手机上运行,并代表用户与OAuth服务器交互。我在web服务器上运行OAuth服务器端代码,用于在与远程OAuth服务器握手时维护OAuth会话详细信息。现在,我正在争论如何最好地处理智能手机客户端的问题

对于这个问题,我们假设在过去,在远程OAuth服务器登录用户并授予我的应用程序访问权限之后,我收到了一个由远程OAuth服务器授予我的访问令牌。我们还假设它是一个“撤销前有效”的访问令牌

当然,主要关注的是实现一些不会让用户处于风险中的东西。最简单的方法是让我的web服务器以加密的形式将访问令牌返回到智能手机上的客户端代码,然后将加密令牌存储在用户的本地存储器中。或者为了更严格的安全性,返回我自己的加密唯一标识符,我的客户端代码在智能手机上随每个请求传入。然后,我的web服务器可以解密接收到的ID,并在本地数据库中查找最新的访问令牌。这似乎相当安全,除了用户丢失手机的情况。我想我可以在浏览器上实现类似“记住我”的选项,因此如果用户不检查它,那么每个会话都会触发一个新的重新授权会话

如果我的应用程序是处理财务信息,那么我甚至不会考虑“记住我”选项,但是远程OAuthServer后面的应用程序更是在推特或Flickr的敏感级别。 我的问题是:

  • 我提议的访问令牌管理和OAuth处理方案对于我描述的应用程序是否足够可靠和安全
  • 有更好的方法吗?如果是,什么
  • 您对OAuth和移动电话还有其他想法或意见吗
**更新-在这篇文章发表后,在相关问题列表中找到了这些非常有用的线索:

**更新2-如果您从会话OAuth存储切换到数据库存储(如MySQL),请记住为给定的使用者密钥和用户ID注册服务器,否则在调用RequestToken时将出现错误。这个关于ELance API的网页有一个很好的例子(查找标题为“步骤2:获取请求令牌”的部分,并查找带有updateServer调用的代码段):

您必须根据自己的远程OAuth服务器需要调整该示例


--roschler

我有一些使用Yandex(排名第一的俄罗斯搜索引擎)OAuth服务器的经验。他们就是这样做的

仅通过HTTPS访问OAurh服务器。因此,令牌由网络以加密方式传输。正如HTTPS一样,客户端可以通过证书检查来检查服务器的有效性

此外,他们建议以加密方式存储收到的访问令牌。至于我,我有自己的存储实现,它以3DES加密方式将访问令牌存储在SharedReferences中。3DES加密的密钥是用户选择的“PIN码”。每次应用程序启动时,它都会请求一个PIN,然后尝试解密令牌


您可以实现对Yandex服务之一的访问(使用OAuth授予访问权)。

Olegas,您是验证PIN然后在Android手机上解密访问令牌,还是将加密的访问令牌和PIN传递给服务器进行解密和验证?谢谢。我正在尝试在客户端解密令牌,如果成功,我将通过HTTPS将令牌和我的请求一起传输到服务器