Android客户端到REST API服务器身份验证

时间:2020-11-04 11:48:18

标签: android node.js api rest express

我对使用Node and Express和Android客户端的REST API服务器的身份验证方法有疑问。

我目前正在开发一个可以注册用户帐户的应用程序。输入的密码已使用BCrypt加密,然后发送到REST API服务器。之后,用户凭据将存储在MongooseDB中。

登录时,Android客户端必须以某种方式进行身份验证才能进入MainActivity。输入注册期间使用的电子邮件地址和密码时,查询将发送到REST API,该API搜索该电子邮件地址。找到后,它将包括加密密码在内的整个用户凭据返回给Android客户端。然后在这里验证密码。如果成功,则该应用将跳至MainActivity。

现在,我知道这似乎并不是真正的身份验证,因为服务器现在对身份验证一无所知,也不在乎。另一方面,将从REST API接收的密码进行加密。

可以像现在一样运行“身份验证”吗,还是应该考虑以其他方式进行?如果是这样,那么一种简单的方法就可以启动并运行正确的身份验证?

谢谢!

1 个答案:

答案 0 :(得分:1)

  • 在服务器上存储电子邮件和散列+加盐的密码。
  • 当客户端向您发送匹配的email + pw组合时,向它们返回一个sessionID令牌和一个刷新令牌,并将它们都存储在您的服务器上。
  • 然后应将SessionID与客户端的每个请求一起发送,以便服务器知道它已通过身份验证,以及请求来自谁。
  • sessionID应该更早过期(与刷新令牌的一周相比,它需要一天或两天的时间),然后用户通过发送刷新令牌来获得一个新的会话ID。
  • 如果刷新令牌已过期,则用户必须再次发送电子邮件+密码,并同时获取两者中的一个。
  • 使用tls 1.2进行连接,否则确实很糟糕

或者甚至不将密码存储在您的服务器上,而是使用Google登录名和/或其他一些oauth,更安全。