在Android的共享首选项中安全地存储Oauth2访问/刷新令牌?

在Android的共享首选项中安全地存储Oauth2访问/刷新令牌?,android,security,sharedpreferences,oauth-2.0,Android,Security,Sharedpreferences,Oauth 2.0,我知道我可以将这些值设置为“MODE_PRIVATE”,并且只有我的应用程序/用户ID才能访问它们,但是,用户在任何时候都可以访问这些值吗?那么,将这些存储在共享的首选项中是否“安全”,或者是否有更好的地方 此外,如果我以后决定公开一些用户设置的首选项,我是否能够隐藏这些值 多谢各位 编辑:我也知道内部存储,但我想知道我是否可以通过共享首选项实现更简单的功能。如果你想向用户显示一些首选项,你就不必担心这些选项会出现。我认为共享偏好可能是存储这些东西的“最安全”的地方。除非用户有一个根手机,他们给

我知道我可以将这些值设置为“MODE_PRIVATE”,并且只有我的应用程序/用户ID才能访问它们,但是,用户在任何时候都可以访问这些值吗?那么,将这些存储在共享的首选项中是否“安全”,或者是否有更好的地方

此外,如果我以后决定公开一些用户设置的首选项,我是否能够隐藏这些值

多谢各位


编辑:我也知道内部存储,但我想知道我是否可以通过共享首选项实现更简单的功能。

如果你想向用户显示一些首选项,你就不必担心这些选项会出现。我认为共享偏好可能是存储这些东西的“最安全”的地方。除非用户有一个根手机,他们给了恶意应用程序根权限去读取你的数据文件,那么就我所知没有什么好担心的。虽然我期待着其他人的回应。明星

共享首选项只是存储在应用程序数据文件夹中的纯文本XML文件。无论如何,这不是一个安全的地方。查看这些文件和提取令牌非常容易。您仍然可以使用共享首选项,但需要加密存储的信息。至于“内部存储”,它们与“共享首选项”共享同一位置,因此仍然易于查看


您未加密的数据不会受到手机中运行的其他应用程序的攻击,但不会受到恶意用户的攻击。

即使您将访问令牌存储在设备的安全位置,您也应该认为它可以被泄露。这就是为什么您不应该在移动应用程序代码中包含客户端机密。 对于访问令牌,您可以尝试使其保持安全,但不能使其100%安全。因此,您不应该获得不必要的作用域或不必要的长寿命令牌

附言。
一般来说,移动设备使用“response_type=token(隐式授权)”,不应该获取刷新令牌。但这取决于身份验证服务器的策略。

谢谢您的帮助。我们正在使用的oauth2协议需要使用刷新令牌以及典型的访问令牌。问题是我们需要将它们存储在设备上的某个位置,因为它需要跨会话持久化,并且应用程序无法存储它们。OAuth2规范要求移动设备(所有不能具有客户端机密的客户端)不使用刷新令牌。如果您使用的OAuth2服务器需要它,则表示该服务器不支持此类客户端。您可以提供指向此客户端的链接吗?我在看:它说刷新令牌是可选的mplicit Grant是为不能拥有客户机密的客户提供的流。