
我的服务器公开了许多REST服务,我想以某种方式保护网络服务,使其只能由我所拥有的android应用使用.
基本上,客户端(Android应用程序)和服务器都是我开发的;而且我只需要将REST服务公开给我的androID应用.
我想到了一些保护REST服务的方法,例如
>使用基于用户名/密码的身份验证
> JWT令牌
>基于签名的验证
>等
在所有情况下,AndroID应用都应将密码存储在应用中;在这种情况下,黑客可以轻松地反编译应用程序并获取密码.
如何保护只能由androID应用访问的REST?
编辑:
客户端应用不需要用户的任何身份验证
解决方法:
您可以将SSL与客户端身份验证一起使用.服务器必须知道应用程序的公共密钥,而应用程序必须知道服务器的公共密钥.使用密钥库将应用程序的私钥存储在应用程序本身中,这是防止反编译的安全方法,请查看https://developer.android.com/training/articles/keystore.html
替代:
获取您应用的哈希值
public voID traceKeyHash(Activity activity){ try { PackageInfo info = activity.getPackageManager().getPackageInfo("your.package.here", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.i(getClass().getname(), "Share - KeyHash: " + Base64.encodetoString(md.digest(), Base64.DEFAulT)); } } catch (Exception e) { e.printstacktrace(); }}现在您必须将哈希发送到服务器,但是…为了避免嗅探请求,您必须对哈希进行加密.使用存储在密钥库中的私钥对哈希进行加密,然后使用服务器端的公钥对消息解密,检查哈希是否与您注册的哈希匹配.
总结以上是内存溢出为你收集整理的安全的REST服务仅由特定的Android应用使用全部内容,希望文章能够帮你解决安全的REST服务仅由特定的Android应用使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)