authentication - 匿名用户的访问 token - JWT

标签 authentication laravel-5 authorization access-token jwt

我一直在研究切换到社区支持的授权系统,而不是我建立的系统。我犯了重建轮子的错误,而不是实现利用最佳实践的社区驱动系统。但是,我找不到任何使用 JWT 而不是身份验证的授权示例。

我愿意接受所有建议。据我所知,JWT 和 OAuth 要求客户端拥有现有帐户并进行身份验证才能接收 token 。但是,我的应用程序中需要以下功能。

  • 匿名用户应该获得一个访问 token ,并且能够获取一些资源。我应该能够识别这些 guest 客户并为他们存储 session 数据。
  • guest 用户应该能够登录,然后可能会获得一个新 token ,或者更新他们的访问级别以请求受限资源并执行仅针对成员的操作。

  • 我将使用 Laravel 5.1 和 AngularJS 构建这个项目。非常感谢所有建议。我真的可以在这方面使用一些指导,简单的文档链接就足够了。

    最佳答案

    我当然理解您描述的用例 - 但我认为匿名 token 实际上并没有增加任何安全性。这是因为一个完全匿名的用户将能够请求一个匿名 token 而无需首先表明自己的身份(否则它不会是匿名的)。因此 - 必须假定此 token 由您的应用程序的任何和所有用户拥有(包括具有恶意意图的用户)
    虽然我不熟悉 Laravel - 实现此类功能的一般方法可能类似于:
    方法

  • 找到一个允许在登录前收集用户信息的 session 库(我很确定大多数 session 库都会促进这一点)
  • 为每个访问应用程序的用户创建一个 session (在此您可以开始分析他们,存储有用的信息等)
  • authenticated 之间创建一个分界线端点和 anonymous端点,需要用户 session 中存在的有效访问 token 来检索/发送数据到 authenticated 的端点
  • 当用户“登录”时,您可以使用您选择的身份验证提供商执行 OAuth2.0/OIDC 流程,最终检索 token 。
  • 将 token 存储在用户的 session 中(实际上是“升级”他们的访问权限),以便他们下次尝试点击 authenticated他们有权访问的端点

  • 一般注意事项
  • 确保对 session 数据使用持久存储(我通常会使用 Redis 之类的东西),以便可以在应用程序实例之间共享 session 数据)
  • 关于authentication - 匿名用户的访问 token - JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184594/

    相关文章:

    javascript - 使用 ajax 的 javascript 应用程序的身份验证模型

    php - 根据登录名将两个不同的用户重定向到不同的页面

    git - 克隆私有(private)存储库 (Github)

    Python Mechanize 登录帐户 - 表单未提交

    wcf - 对于 WPF 和 WCF 应用程序的用户身份验证/授权,什么被认为是 "best practice"?

    java - Spring 安全: How to authorize user for a given URL when using multiple `http` elements?

    ios - 在 HealthKit 中请求授权 : why the result is always successful?

    php - Laravel 5.1 防止 CSRF 不匹配抛出异常

    laravel - 导出到 Excel 时出现非法偏移类型错误

    javascript - 在 Javascript 中创建一个函数,将文本文件读入字符串并搜索字符以更改它们