java - 如何验证对 Android 应用程序的请求

标签 java android rest retrofit

我正在制作一个 Android 应用程序,它将从我的 API 中获取数据。

我的应用程序要做的第一件事是让用户使用他们的凭据登录。

  • 我的问题是我的 API 是否需要处理 session ?或者我应该为每个请求验证用户身份?
  • 原生 Android 应用是否会在设备上保存用户凭据并在登录后针对每个请求发送这些凭据?
  • 我正在使用 Retrofit。我如何在用户登录后发送他们的凭据?

最佳答案

这将是深入研究和阅读 OAuth 的好时机。您的用例似乎完全匹配。您需要执行两个主要步骤:身份验证和授权。我在这里简要解释了它们:Authentication of a resource in Dropwizard .您可以忽略 DropWizard 部分,REST 概念保持不变。描述的简短版本可能是这样的:用户在手机上安装了您的应用程序。他们使用他们的用户名和密码(通过 SSL 向您的 REST 发送请求)对 ONCE 进行身份验证。您的服务对用户进行身份验证并返回一个“refresh_token”和一个“access_token”,应用程序将其保存在其端,同时您将 access_token/refresh_token 映射并保存在服务端与用户。对于每个后续请求,您的应用程序将不会发送“access_token”作为“身份验证” header 的一部分,您将在服务器端解析并检查 access_token 是否仍然存在(假设 access_token 过期)以及它是否存在,然后完成授权/认证过程。如果有任何机会,访问 token 已过期,401 将返回到您的应用程序。然后,应用程序将必须使用“refresh_token”来获取新的 access_token,一旦新的 access_token 获得批准(当然,它再次在服务器端映射到用户的身份)所有后续调用都将使用新的 access_token,直到它到期。这是 OAuth 的简化版本,并没有严格遵守规范。这是一个非常基本的身份验证/授权流程,可以帮助您入门。希望对您有所帮助!

关于java - 如何验证对 Android 应用程序的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663861/

相关文章:

java - 是否可以在 Android 中使用 YouTube API 来显示 360° 视频?

android - 在多个 apk 的情况下,以编程方式从 playstore 获取最新应用程序的版本代码

java - 如何在 Java 中传递函数时定义方法签名 - JUNIT with Hamcrest Fails

java - 如何使用 JOOQ 模型 API 从基于字符串的列名称添加动态条件?

java - 如何使用 Hibernate 插入记录正确自动生成主键 ID

sql - DataSnap 服务器 - 根据客户端请求共享数据库连接或新连接?

javascript - Loopback - 基于 id 以外的其他属性的 REST 更新插入/更新

java - 如何打印空的二维数组而不出现空指针异常

android - 用户切换主屏幕时小部件更新

java - 在 Spring 和 hibernate 中从数据库获取数据时,如何以正确的格式获取日期时间?