3

我正在 Android 上开发一个本机移动应用程序,它必须与具有 oAuth2.0 实现的服务器交互,并使用 Google AppAuth 库,如此所述。

1) 除了将授权码/访问令牌返回到我们的应用程序之外,重定向 URI 的目的是什么。由于要在授权请求中指定的重定向 URI 必须与在 Google API 控制台中注册的相同,它是否也是一种确保控制权仅返回到在谷歌注册的应用程序而不在其他地方注册的媒介?

2) 由于我在移动应用程序中获取访问令牌和刷新令牌并将其保存在移动设备中(如 codelabs 示例所示),如果有人掌握了我的刷新令牌、客户端 ID 和重定向 URI 的这些详细信息怎么办。有人可以在他自己的设备上使用这些详细信息访问我的服务器吗?

4

1 回答 1

2
  1. 除了将授权码/访问令牌返回到我们的应用程序之外,重定向 URI 的目的是什么。

正如您所说,大多数 IDP 使用与特定客户端 ID 关联的重定向 URI 白名单来限制可以发送代码和令牌的位置,作为防止令牌盗窃的第一道防线。这适用于 Web,其中 https 重定向 URI 至少提供了一些防止欺骗的基本保护措施。

直到最近,https 重定向 URI 都不适合原生应用程序。Android M 引入了App Links,它允许应用程序以无法被其他恶意应用程序劫持的方式声明 https 权限。另一种技术PKCE提供的保护稍弱,但适用于任何 Android 版本。但是,PKCE 需要您的授权端点的支持。

  1. 如果有人掌握了我的这些刷新令牌的详细信息 [...] 有人可以在他自己的设备上使用这些详细信息访问我的服务器吗?

一般来说,是的。如果您的令牌泄露给另一个恶意应用程序,他们可以使用这些来访问这些令牌允许访问的数据。像这样的“不记名令牌”必须保密,通常只通过令牌发行者和令牌用户之间的加密连接传输它们。

令牌通道绑定的标准工作正在进行中,其中令牌只能与在设备上的硬件加密模块中生成和存储的非对称密钥对结合使用。从这些模块中窃取私钥非常困难,而不仅仅是试图窃取令牌本身。

我建议阅读OAuth2 for Native Apps以了解当前最佳实践的概述。要在您的应用程序中使用 OAuth2,我建议使用OpenID AppAuth库。免责声明:我是 AppAuth 的主要维护者。

于 2017-02-02T19:12:55.307 回答