【发布时间】:2015-07-17 13:22:00
【问题描述】:
问题
我设计的 REST API 将用于 iOS 和 Android 应用,未来可能还会用于 Web 和其他移动客户端。
如何将我的整个 API 限制为仅允许我想要访问的客户端(应用程序)?我想阻止第 3 方访问我的 API 来注册用户,甚至在未通过授权应用程序(移动或 Web 客户端)的情况下登录。
当前想法
我可以给每个我想要授权的客户一个密钥,但是我如何防止这个密钥从我的应用程序的源代码中被提取(如果我的应用程序是一个网络应用程序尤其容易)?此外,如果将来需要更改密钥(由于妥协),这将很困难,因为我的所有客户端都需要更新,而旧客户端将无法运行。必须有更好的解决方案。
我正在使用 JWT 进行用户身份验证,但我看不到如何将其应用于我的问题。我真的很喜欢 JWT 的简单实现方式,所以如果我可以应用 JWT 实现来解决这个问题,那就太好了。
【问题讨论】:
-
我认为您可以通过在标题中提供密钥来做到这一点。
-
谁是授权客户?有人知道你的密钥吗?或者您已经验证过的任何人(通过电子邮件、oauth 等)?
-
@inmyth “客户端”是指应用程序,例如网络应用程序或移动应用程序。我不是指用户意义上的客户。这个问题不是关于用户身份验证,而是关于应用授权(“此应用是否有权访问我的 API?”)。
-
@AshokLondhe 我可以在请求的标头中提供一个密钥,但是当将来需要更改此密钥时(由于它被泄露),就会出现问题。 SSL 可以防止此密钥被泄露,但是否存在密钥从移动应用二进制文件或网络应用源代码中泄露的风险?
-
您找到解决问题的方法了吗?
标签: android ios security rest authorization