繁体   English   中英

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

[英]OAuth 2.0 (Tokens) for Login Functionality

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

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

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

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

现在我的问题是

  1. 在我的情况下,我是否需要请求令牌? 是否可以直接获取访问令牌
  2. 什么是OAuth使用方密钥和OAuth使用方秘密密钥? 我的应用程序中需要这些密钥吗? 我相信它仅用于允许第三方应用程序。 就我而言,我是资源所有者,而我是消费者。
  3. 你们有我要学习的榜样吗?
  4. 您知道用于PHP的OAuth的任何知名框架吗?
  5. 除了“用户”表之外,是否还需要其他任何数据库支持? 用于存储OAuth详细信息吗?
  6. 任何对此进行研究的其他文件将不胜感激。

我在OAuth中阅读了不同的Grant Types,但困惑了如何使用它来实现我的方法。

提前致谢。

根据我的阅读,您根本不需要OAuth。 如果涉及第三方需要访问您的用户资源,则需要OAuth。

  • 如您所述,您只需要一个登录API,例如https://myserver.com/signin?user=john.doe@gmail.com&password=12345
  • 成功登录后,服务器将生成一个GUID并将其存储给用户。 您可以将它命名为sessionId / cookieId。 响应可能类似于'{user:john.doe@gmail.com; sessionId=KJN93EJMQ3WEC9E8RCQJRE8F9E}' '{user:john.doe@gmail.com; sessionId=KJN93EJMQ3WEC9E8RCQJRE8F9E}'
  • 对于后续调用,可以在标头中传递sessionId。
  • 服务器验证会话并允许用户进入。

其他注意事项:

  • 我假设您的服务器是HTTPS,因此URL上的用户/密码已加密。
  • 为了安全起见,您可能希望使sessionId无效,使sessionId定期更新。
  • 有一个注销,您可以根据该注销清除User的sessionId。

我认为这是标准的东西,如果不是通过REST登录的话。

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

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

OAuth2.0具有各种“ 授权授予 ”。 有四种类型

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

经过研究,我意识到“资源所有者凭证”最适合我。 我找到了一个完美的库,可以帮助您内部了解后台流程。 这是要下载的GitHub链接。

在这里发现了两个主要问题,

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

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

谢谢,
桑杰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM