重定向URI是否为本机移动应用程序的OAuth实现提供了安全性



我正在Android上开发一个本地移动应用程序,该应用程序必须与实现oAuth2.0的服务器交互,并使用此处解释的Google AppAuth库。

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

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

  1. 重定向URI的目的是什么,而不是将授权代码/访问令牌返回到我们的应用程序

正如您所说,大多数IDP使用与特定客户端ID相关的重定向URI白名单,以限制代码和令牌的发送位置,作为防止令牌被盗的第一道防线。这对网络来说效果很好,https重定向URI至少提供了一些防止欺骗的基本保护措施。

直到最近,https重定向URI还不适合本机应用程序。安卓M推出了应用程序链接,允许应用程序以一种不会被其他恶意应用程序劫持的方式声明https权限。另一种技术PKCE提供的保护稍弱,但适用于任何Android版本。但是,PKCE需要您的授权端点的支持。

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

一般来说,是的。如果您的令牌被泄露给另一个恶意应用程序,他们可以使用这些令牌来访问这些令牌允许访问的数据;Bearer代币";像这些必须保持秘密,通常只通过令牌的颁发者和令牌的用户之间的加密连接进行传输。

令牌通道绑定的标准工作正在进行中,其中令牌只能与设备上硬件加密模块中生成和存储的非对称密钥对一起使用。从这样的模块中窃取私钥是非常困难的,比试图窃取代币本身要困难得多。

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

最新更新