android – 如何仅限授权客户端访问我的REST API?

android – 如何仅限授权客户端访问我的REST API?,第1张

概述题 我设计的REST API将用于iOS和Android应用程序,以及将来可能用于Web和其他移动客户端. 如何将我的整个API仅限制为我想要访问的客户端(应用程序)?我想阻止第三方访问我的API以注册用户,甚至无需通过授权应用程序(移动或Web客户端)登录. 目前的想法 我可以为每个客户端提供我想要授权的密钥,但是如何防止从我的应用程序的源代码中提取此密钥(如果我的应用程序是Web应用程序,则特 题

我设计的REST API将用于iOS和@L_403_0@应用程序,以及将来可能用于Web和其他移动客户端.

如何将我的整个API仅限制为我想要访问的客户端(应用程序)?我想阻止第三方访问我的API以注册用户,甚至无需通过授权应用程序(移动或Web客户端)登录.

目前的想法

我可以为每个客户端提供我想要授权的密钥,但是如何防止从我的应用程序的源代码中提取此密钥(如果我的应用程序是Web应用程序,则特别容易)?此外,如果密钥需要在将来更改(由于妥协),这将很困难,因为我的所有客户端都需要更新,旧客户端将无法运行.必须有一个更好的解决方案.

我正在使用JWT进行用户身份验证,但我没有看到如何将此问题应用于我的问题.我真的很喜欢JWT如何轻松实现,所以如果我可以应用JWT实现来解决这个问题会很棒.

解决方法 当您在客户端中嵌入访问密钥时,您基本上接受它已被暴露.像proguard和ssl这样的当前技术可以保护它,但它并不能阻止坏人以合法的方式滥用它(即通过应用程序).事实上,在需要用户验证的情况下,这仍然适用.因此,防止滥用只是安全范式的一半.另一半是识别施虐者.

这就是说你不能希望在阻止访问密钥被黑客攻击方面做得更多.但是,您可以在服务器控制的权限下再次对其进行分层.我所知道的一种方式是令牌机制.用户发送带有访问密钥和设备参数的请求.一旦验证,你就会给他一个有效期的令牌.有了这个标记,他就可以访问你的资源了.这种方法有两个好处:

>仍然可以通过设备参数识别用户.根据这些信息和访问频率,您可以决定他是否是施虐者.令牌本身在一段时间后过期,所以如果他是,那么你可以拒绝他下一个令牌.
>您无需更新访问密钥.

实际上,这种机制与Amazon Token Vending Machine类似,后者被服务Amazon Cognito取代.

总结

以上是内存溢出为你收集整理的android – 如何仅限授权客户端访问我的REST API?全部内容,希望文章能够帮你解决android – 如何仅限授权客户端访问我的REST API?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存