首页 > 解决方案 > iOS OAuth2 授权最佳实践

问题描述

我的 iOS 应用程序包含几个使用 OAuth2 授权的 API 集成。我看到很多在线建议不要在设备上存储客户端 ID、机密或令牌。但是,我不清楚其中有多少适用于 OAuth2。例如,clientId 是 Authorization 请求的查询参数。因此,任何用户都可以使用代理(例如 Charles)轻松拦截此值,因此我看不到隐藏此值的好处。我的理解是 ios 应用程序最重要的漏洞是另一个应用程序试图使用您的应用程序的自定义方案捕获重定向。但是如果我们使用Proof Key for Code Exchange (PKCE),恶意应用程序只能截获授权码,没有Code Verifier就无法将其交换为令牌。那么,使用 OAuth2 的 iOS 应用程序的最佳实践是什么?

标签: iosswiftsecurityencryptionoauth-2.0

解决方案


原生应用的 OAuth推荐 AppAuth 模式,其中有几个关键特征:

  • 该应用程序使用系统浏览器的一种形式(ASWebAuthenticationSession 窗口),因此该应用程序永远无法访问用户的凭据

  • 正如您所指出的,使用了授权代码流 (PKCE)。您可以通过使用 https:// 回调 URL 而不是自定义方案来进一步加强这一点,尽管它有点困难。

可以比较的东西

这是我的一些链接,您可以运行更多详细信息和示例,这可能会为您自己的解决方案提供一些想法:


推荐阅读