我们正在开发一个不会通过任何商店分发的Android应用。实际上,它是安装在医疗设备中的,将分发给我们的用户(即患者)。因此,我们控制观众。即使终端被盗,也将在网络层将其禁用(SIM被阻止)。 所有通信将通过专用的APN(基本上是虚拟专用网络连接)进行。因此,我们可以确保只有分布式设备才能与服务器端资源进行通信。我们也可以控制设备群的IP地址。 至于AWS服务,我们正在使用Android应用程序中的S3来存储一些患者文件。我们可能会扩展到其他AWS服务。显然,我们正在设备中使用Android SDK。
我们当前正在使用在所有终端之间共享的开发者访问密钥。这似乎是一个很好的安全漏洞:如果一台设备被盗,黑客可以获取这些共享凭据,并有可能将其用于黑客活动,这意味着整个终端机受到了威胁。因此,我们正在寻找更强大的解决方案。
假设我们正在通过专用APN运行,我们有什么选择可以连接到AWS?
为了施加一些限制,我们希望不必在每个设备都可以与我们的AWS服务进行通信之前对其进行预注册(我知道这就是Cognito用户池的工作方式:拥有一个预注册用户/身份池) 。取而代之的是,我们希望在设备首次连接时就检索设备标识。
我们目前最好的选择是使用Cognito身份池,这似乎是在不进行任何预注册的情况下交付身份。 考虑两个选项:使用“未经身份验证/来宾”访问权限或构建“开发者身份验证身份提供者”以在身份池传递令牌之前对请求者身份进行检查。 该设备获得授权后,便会与AWS STS交换令牌,以获取针对该身份授权的任何AWS服务的临时凭证。
现在我有问题了:) 在这里使用Cognito身份池是否有意义?我们可以只使用“未经身份验证/访客”访问吗(假设我们在VPN内)?还是需要在中间实施验证片? 我对STS工作流程的理解正确吗? 还有其他想法吗?
非常感谢您的大力帮助和宝贵的时间。
编码愉快!
干杯
面料