edenspiekermann/craft-jwt-auth

通过使用JSON Web Tokens (JWT) 启用Craft的认证

0.2.0 2019-10-06 17:05 UTC

README

通过使用JSON Web Tokens (JWT) 启用Craft的认证。

Screenshot

要求

此插件需要Craft CMS 3.3或更高版本。

安装

要安装此插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目

    cd /path/to/project

  2. 然后让Composer加载插件

    composer require edenspiekermann/craft-jwt-auth

  3. 在控制面板中,转到设置→插件,并点击Craft JWT Auth的“安装”按钮。

Craft JWT Auth概述

来自官方网站

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

此插件允许在存在可以成功验证为与生成的密钥匹配的签名的JWT的情况下,安全地认证Craft的请求。

配置Craft JWT Auth

安装后,导航到插件的设置页面并输入所需设置以激活插件

使用Craft JWT Auth

插件将尝试验证任何包含具有“Bearer”前缀的“Authentication”头中JWT的传入请求,或使用更简单的“X-Access-Token”头值。例如

# With Authorization: Bearer
curl --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o" MYCRAFTSITE.com

# With X-Access-Token
curl --header "X-Access-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.XbPfbIHMI6arZ3Y922BhjWgQzWXcXNrz0ogtVhfEd2o" MYCRAFTSITE.com

插件将尝试使用PHP的lcobucci/jwt包验证令牌。该包遵循JWT的IANA规范

如果提供的令牌可以验证并且可以与具有匹配提供的“sub”键的用户账户匹配,则用户将被认证并且请求可以继续。

如果令牌可以验证,但不存在匹配的用户账户,并且“自动创建用户”设置已启用,并且Craft设置中启用了公共注册,则将动态创建新的用户账户,并使新用户登录。

Craft JWT Auth路线图

功能

插件提供以下功能

  • 验证包含在认证头中的JWT的传入请求。
  • 将验证的JWT与Craft CMS中的用户账户匹配并登录为此用户。
  • 如果找不到现有账户,则可选地创建新账户。
  • 从用户的账户数据生成JWT,以允许与实现相同密钥的其他服务共享。

里程碑

虽然该插件已经可以使用,但绝不是最终的。请自行承担风险。在我将其带到1.0.0版本之前需要做的事情

  • 0.2.0 将其重构为更逻辑的服务和类集。
  • 0.3.0 更好地测试实际的JWT的存在,而不仅仅是其他类型的令牌。
  • 0.3.1 检查是否存在有效的声明,并在它们不存在时进行处理。
  • 0.3.2 处理成功创建用户但失败图像创建的边缘情况。
  • 0.3.3 更好的异常处理。
  • 0.4.0 为所有这些添加测试用例。
  • 让真正聪明的人审查代码中的漏洞。
  • 我还没有想到的其他事情,因为我还没有做👆。

Mike Pierce编写和维护。由Edenspiekermann提供支持。