我想开发一个Android应用程序,匿名用户可以通过HTTPS向我的服务器发送请求。我需要确保请求来自我的应用程序,因为任何人都可以制作HTPP请求并发送它。这在我的应用中非常关键。
我读到了关于GCM令牌的内容,但我不知道他们是否可以在我的问题上帮助我。
有没有办法验证请求(来自应用程序)而不会在代码中隐藏密钥(因为我读到隐藏的秘密是一种不好的做法,因为在Android中反编译非常简单)。
由于
答案 0 :(得分:0)
您始终可以为您的用户生成唯一令牌。并在请求的标头中添加该标记,并在后端验证它。
答案 1 :(得分:0)
您的服务器可以为您的应用的每个用户生成唯一的PIN,然后将其发送到您的应用并显示在应用上。
用户即使是匿名的,也应该在发送回复之前输入相同的PIN。反过来,请求可以携带此PIN,服务器可以验证它确实来自同一个应用程序。
此外,您可以设置每个PIN的有效性超时有效,以便不会误用,并且始终在任何会话结束时使用最新生成的PIN。
还有一个问题需要回答第1点:如何确保将此PIN发送到您的应用,而不是任何假应用。
答案就是:为此,每个应用程序在Android设备上安装时都会获得唯一的applicationid。安装时,此applicationid可以谨慎地注册到您的服务器。因此,这样您就可以确保所有API调用都来自已注册的应用程序。
答案 2 :(得分:0)
我在遵循本指南后想出了如何解决此问题:https://android-developers.googleblog.com/2013/01/verifying-back-end-calls-from-android.html
基本上,您使用通过Google Play服务提供的GoogleAuthUtil类来检索名为“ID令牌”的字符串。您将令牌发送到后端,后端可以使用它快速,低成本地验证发送的应用程序以及使用该应用程序的用户。
当您的服务器收到Android应用中的令牌时,验证它是非常重要的。这需要两个步骤:
感谢。