如何为从移动和javascript Web应用程序访问的rest API实现OAuth 2.0,如基于令牌的身份验证

Sat*_*ddu 6 javascript authentication rest android oauth-2.0

我需要为我的REST API实现身份验证和授权机制.这是从移动应用程序和Web应用程序访问的rest api.

机制我想实现:
所以根据我的理解,我使用的是基于密码的身份验证.移动应用程序或javascript Web应用程序通过HTTPS post请求发送用户名和密码,以获取有限时间的访问令牌.

问题

  1. 因为访问令牌每1小时左右到期.再次请求最终用户输入用户名和密码.这是不可接受的.
  2. 如果我们将令牌的时间延长一段时间,那么如果有人处理令牌,他们可以访问Rest API更长时间.由于Web应用程序是javascript应用程序,因此可以在计划文本中轻松使用.

所以我试图理解像facebook和twitter这样的应用程序如何为其原生移动应用程序实现授权.他们是否通过存储在本地存储中永远记住访问令牌.这样如果一些恶意应用程序拥有root权限,那么android手机就可以访问令牌.

对于在javascript和android应用程序中开发的独立Web应用程序,它对上述机制有什么改进?

Chr*_*e L 1

访问令牌确实是短暂的。为了长期保持授权,OAuth2 有一种称为“刷新令牌”的东西。

如果提供商支持(Google 和 Facebook 都支持),OAuth2 使用者可以在初始流程中请求除了访问令牌之外的刷新令牌(我相信 Google 称之为“离线访问”)。访问令牌正常使用,但当它过期时,消费者可以使用其凭据和刷新令牌请求新的访问令牌。

有关详细信息,请参阅 Google 文档:https ://developers.google.com/accounts/docs/OAuth2WebServer#offline 。