验证Android应用程序请求

时间:2017-07-11 08:17:01

标签: android http authentication

我想开发一个Android应用程序,匿名用户可以通过HTTPS向我的服务器发送请求。我需要确保请求来自我的应用程序,因为任何人都可以制作HTPP请求并发送它。这在我的应用中非常关键。

我读到了关于GCM令牌的内容,但我不知道他们是否可以在我的问题上帮助我。

有没有办法验证请求(来自应用程序)而不会在代码中隐藏密钥(因为我读到隐藏的秘密是一种不好的做法,因为在Android中反编译非常简单)。

由于

3 个答案:

答案 0 :(得分:0)

您始终可以为您的用户生成唯一令牌。并在请求的标头中添加该标记,并在后端验证它。

答案 1 :(得分:0)

  1. 您的服务器可以为您的应用的每个用户生成唯一的PIN,然后将其发送到您的应用并显示在应用上。

  2. 用户即使是匿名的,也应该在发送回复之前输入相同的PIN。反过来,请求可以携带此PIN,服务器可以验证它确实来自同一个应用程序。

  3. 此外,您可以设置每个PIN的有效性超时有效,以便不会误用,并且始终在任何会话结束时使用最新生成的PIN。

  4. 还有一个问题需要回答第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应用中的令牌时,验证它是非常重要的。这需要两个步骤:

  1. 确认它真的由Google签名。
  2. 确认它真的适合您。
  3. 感谢。