【发布时间】:2014-01-06 23:14:59
【问题描述】:
我正在制作一个从我的 API 获取数据的 Android 应用。
我的应用要做的第一件事是让用户使用他们的凭据登录。
- 我的问题是我的 API 是否需要处理会话?还是我应该为每个请求对用户进行身份验证?
- 本机 Android 应用是否会在设备上保存用户凭据并在登录后针对每个请求发送它们?
- 我正在使用
Retrofit。用户登录后如何发送凭据?
【问题讨论】:
标签: java android rest retrofit
我正在制作一个从我的 API 获取数据的 Android 应用。
我的应用要做的第一件事是让用户使用他们的凭据登录。
Retrofit。用户登录后如何发送凭据?【问题讨论】:
标签: java android rest retrofit
现在是深入了解 OAuth 的好时机。您的用例似乎完美匹配。您将需要两个主要步骤:身份验证和授权。我在这里简要解释了它们:Authentication of a resource in Dropwizard。您可以忽略 DropWizard 部分,REST 概念保持不变。描述的简短版本可能是这样的:用户在手机上安装您的应用程序。他们使用他们的用户名和密码验证一次(通过 SSL 向您的 REST 发出 POST 请求)。您的服务对用户进行身份验证并返回一个“refresh_token”和一个“access_token”,应用程序将其保存在其一侧,同时您将 access_token/refresh_token 与用户一起映射并保存在服务端。对于每个后续请求,您的应用程序将不会发送“access_token”作为“Authentication”标头的一部分,您将在服务器端解析并检查 access_token 是否仍然存在(假设 access_token 过期)以及它是否存在,然后完成授权/认证过程。如果有任何机会,访问令牌已过期,401 将返回给您的应用程序。然后,应用程序将不得不使用“refresh_token”来获取新的 access_token,并且一旦获得新的 access_token 的批准(当然又在服务器端映射到用户的身份),所有后续调用都将使用新的 access_token,直到它过期。这是 OAuth 的简化版本,并不完全遵循规范。这是一个非常基本的身份验证/授权流程,可以帮助您入门。我希望这会有所帮助!
【讨论】: