Android上通信应用之间的身份验证

Android上通信应用之间的身份验证,android,authentication,ipc,Android,Authentication,Ipc,我想写一个Android应用程序(我们称之为“ZX”),它可以与其他事先未知的应用程序进行通信 ZX不想与所有其他应用程序通信。它只想通过ZX权限与用户批准的应用程序通信。用户可以通过ZX的一个活动随时授予和撤销ZX权限 为了做到这一点,ZX需要确定哪个应用程序正在尝试与其通信,如果应用程序第一次与ZX连接,它需要向用户显示其名称(或唯一标识它的其他内容),以询问是否应该允许 问题: 1)如何识别呼叫应用程序? 2)建议使用什么IPC机制?这个问题很难给出一个很好的答案,因为你对细节的理解非常模

我想写一个Android应用程序(我们称之为“ZX”),它可以与其他事先未知的应用程序进行通信

ZX不想与所有其他应用程序通信。它只想通过ZX权限与用户批准的应用程序通信。用户可以通过ZX的一个活动随时授予和撤销ZX权限

为了做到这一点,ZX需要确定哪个应用程序正在尝试与其通信,如果应用程序第一次与ZX连接,它需要向用户显示其名称(或唯一标识它的其他内容),以询问是否应该允许

问题:

1)如何识别呼叫应用程序?


2)建议使用什么IPC机制?

这个问题很难给出一个很好的答案,因为你对细节的理解非常模糊。。。不过,我要试试看

根据“ZX”的功能不同,类似的功能可能适用于此。如果应用程序想要与ZX通信,它们会向ZX发送一条消息,将自己添加到ZX维护的查找表/列表中

基本上你会有这样的东西

应用程序
AI
希望与ZX通信。它发送
ZX
一条消息,其中包含有关应用程序的信息(无论您需要什么,IP地址等)。此信息可以转到一个函数,如
addApplication()
,该函数生成一个新的
CommApp
对象,存储有关应用程序的所有相关信息

ZX
然后可以发送
AI
唯一的身份验证密钥,用于进一步通信。这可以处理实际会话。两个应用程序之间的任何进一步通信都可以使用唯一密钥进行身份验证。这种方法假设您使用身份验证来识别不同的应用程序,而不是试图将“坏人”拒之门外

如果您能详细介绍一下您的实际情况,我很乐意编辑我的问题以满足您的需要。

使用Binder或Messenger是Android中RPC样式IPC的首选机制。它们提供了一个定义良好的接口,可以在需要时对端点进行相互身份验证


认证是什么意思?我的意思是知道哪个应用程序正在敲门交谈。然后检查我的答案。它应该做你想做的。@Vincent好吧,我回答的哪部分不能回答你的问题?这是一个有用的答案。但是,ZX需要向用户显示类似“应用程序AI希望访问我的ressource K.Allow/Deny?”,因此它需要向用户显示识别调用应用程序的内容。@Vincent是的,我的方法将允许这样做。我提到的
addApplication()
函数可以向用户调用一个对话框来允许/拒绝访问。您需要发送所需的权限等。在
addApplication()
之前的请求中,让我感到不安的是AI提供了描述自身的信息。它可以想说什么就说什么,为身份欺骗留下空间。我想知道Android平台是否提供了一种方法,让消息接收者知道正在调用哪个应用程序。顺便说一句,你推荐哪种IPC机制?我找到了这个答案哪种回答了我的问题:虽然是真的,但我找不到任何实际的实现。请提供发送方和接收方之间具有相互身份验证的实现的源。