用于登录功能的OAuth 2.0(令牌)


OAuth 2.0 (Tokens) for Login Functionality

我在这里与一些非常著名和有趣的话题进行了一般性的讨论"基于令牌的认证";。

我需要我的注册用户登录API。场景很简单,我们想将登录详细信息传递给服务器。服务器将使用数据库检查凭据。如果凭证是正确的,则服务器将创建";会话Id";并返回给用户(客户端)。在随后的请求中,用户只需要将该";会话Id";以验证和访问受保护的数据。

很多人建议使用OAuth 2.0,也有人建议使用Custom Logic。在自定义逻辑中,他们要求非常确信安全性。我阅读了OAuth的文档,它很好,很有描述性。我也喜欢用它。但无论我在哪里搜索OAuth身份验证,他们都会给出第三方登录的示例。

我在身边安装了PhpOAuth扩展,以支持此功能。在示例中,他们要求首先使用"getRequestToken";作用使用该请求令牌getAccessToken"函数来获得"访问令牌";。使用该访问令牌只需要调用"获取";以获取受保护的数据。

现在我的问题是,

  1. 在我的场景中,我需要请求令牌吗?可以直接获得Access Token吗
  2. 什么是OAuth使用者密钥和OAuth消费者密钥?我的申请中需要这样的密钥吗?我相信它只允许第三方应用程序使用。就我而言,我是资源所有者,我是消费者
  3. 你们有什么可供我学习的榜样吗
  4. 你知道任何一个众所周知的用于PHP的OAuth框架吗
  5. 这需要任何额外的数据库支持吗;用户";桌子用于存储OAuth详细信息
  6. 如有任何其他文件可供研究,我们将不胜感激

我在OAuth中阅读了不同的Grant类型,但对如何使用来实现我的方法感到困惑。

提前谢谢。

根据我所读到的内容,您根本不需要OAuth。如果有第三方需要访问您的用户资源,则需要OAuth。

  • 正如您所提到的,您只需要一个类似https://myserver.com/signin?user=john.doe@gmail.com&password=12345的登录API
  • 成功登录后,服务器会生成一个GUID并针对用户进行存储。你可以叫它sessionId/cookieId任何你喜欢的东西。响应可能类似于'{user:john.doe@gmail.com; sessionId=KJN93EJMQ3WEC9E8RCQJRE8F9E}'
  • 对于后续调用,sessionId可以在标头中传递
  • 服务器验证会话并允许用户进入

附加注意事项:

  • 我假设您的服务器是HTTPS,因此URL上的用户/pwd是加密的
  • 为了安全起见,您可能希望使sessionId无效。定期续订sessionId
  • 注销,清除用户的sessionId

如果不是通过REST.

进行登录,我认为这是标准的东西

我之前发布的使用OAuth2.0登录的要求。

通常人们认为OAuth2.0只是由第三方应用程序代表资源所有者从资源中心获取数据。这种方法被称为授权代码。

OAuth2.0具有各种"授权授予";。有四种类型

  1. 授权代码
  2. 隐含的
  3. 资源所有者凭据(用户凭据)
  4. 客户端凭据

经过研究,我意识到";资源所有者证书";最适合我。我找到了一个完美的库,可以帮助您内部了解背景过程。这是下载的GitHub链接。

这里发现两个主要问题,

  1. 当我在Chrome中使用我的Mozila创建的访问令牌时。令人惊讶的是,它允许我从其他浏览器访问我的私人数据
  2. 我不确定,但这种方法会和AJAX类型的调用(jQuery工具)一样工作吗

如果有人有想法,请分享。

谢谢,
Sanjay