1

我有两个使用不同证书/密钥签名的应用程序。

我想从应用程序 A 到应用程序 B 进行经过身份验证的调用(对服务)(因此没有第 3 方可以进行这样的调用)。

Android 中此类事情的常见解决方案是具有签名保护级别的自定义权限。但是,在我的情况下它不起作用,因为两个应用程序使用不同的证书(由不同的公司开发)签署

所以,问题是。如果我只想允许应用程序 A(或该公司开发的任何应用程序)在应用程序 B 中调用/绑定服务,那么这种情况下的最佳做法是什么?

4

1 回答 1

2

真的没有,恕我直言。

如果权限不是signature基于 - 的,则用户可以将其授予任何需要它的应用程序,因此权限对您没有帮助。

如果您使用具有绑定模式的服务,您的Binderhas getCallingUid(),您可以使用它来查找调用应用程序的 UID。通过一些工作,您可以从PackageManager. 如何验证包名称取决于您(内置白名单,尝试从 中理解包的签名PackageManager,无论如何)。不过,这并不能防止有人弄乱您的 APK 并破解您的验证程序。

于 2013-04-19T18:17:47.113 回答