OAuth2 授权的 iOS 最佳实践

时间:2021-04-18 17:29:37

标签: ios swift security encryption oauth-2.0

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

1 个答案:

答案 0 :(得分:1)

OAuth for Native Apps 推荐 AppAuth 模式,其中有几个关键特征:

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

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

比较的东西

以下是我的一些链接,其中包含您可以运行的更多详细信息和示例,它们可能会给您一些关于您自己的解决方案的想法: