登录功能的OAuth 2.0(令牌)

时间:2014-09-11 14:42:02

标签: php api authentication oauth oauth-2.0

我在这里有一些非常着名和有趣的主题“基于令牌的身份验证”的一般性讨论。

我需要注册用户使用API​​登录。场景非常简单,我们希望将登录详细信息传递给Server。服务器将使用数据库检查凭据。如果凭据正确,则服务器将创建“会话ID”并返回给用户(客户端)。在后续请求中,用户只需传递“会话ID”即可进行身份验证并访问受保护的数据。

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

我已经安装了Php OAuth extension来支持此功能。在示例中,他们首先要求使用“ getRequestToken ”函数创建请求令牌。使用该请求令牌,他们要求调用“ getAccessToken ”函数以获取“访问令牌”。使用该访问令牌只需要调用“获取”来获取受保护的数据。

现在我的问题是,

  1. 在我的场景中,我需要请求令牌吗?是否可以直接获得访问令牌
  2. 什么是OAuth使用者密钥和OAuth使用者密钥?我的应用程序中是否需要这样的密钥?我相信它只用于允许第三方应用程序。在我的情况下,我是资源所有者,我是消费者。
  3. 你们有什么例子供我学习吗?
  4. 你知道任何有关PHP的OAuth的知名框架吗?
  5. 是否需要除“user”表之外的任何其他数据库支持?用于存储OAuth详细信息?
  6. 我们将非常感谢您为此学习的任何其他文件。
  7. 我在OAuth中阅读了不同的格式类型,但对如何使用以实现我的方法感到困惑。

    提前致谢。

2 个答案:

答案 0 :(得分:0)

根据我的阅读,您根本不需要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上的user / pwd已加密。
  • 为了安全起见,您可能希望使sessionId无效,并定期更新sessionId。
  • 注销,清除针对用户的sessionId。

如果没有通过REST进行登录,我认为这是标准的东西。

答案 1 :(得分:0)

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

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

OAuth2.0有各种各样的" Authorization Grant "。有四种类型,

  1. Authrozation Code
  2. 资源所有者凭据(用户凭据)
  3. 客户端凭据
  4. 经过研究,我意识到"资源所有者证书"最适合我。我发现了一个完美的库,可以帮助您在内部了解后台进程。这是指向download的GitHub链接。

    在这里找到两个主要问题,

    1. 当我在Chrome中使用我的Mozila创建的访问令牌时。令人惊讶的是,它允许我从其他浏览器访问我的私人数据。
    2. 我不确定,但这种方法与AJAX类型的调用(jQuery工具)相同吗
    3. 如果有人有想法,请分享。

      谢谢,
      桑杰