structureit / craft-cognito-auth
使用JWT启用Craft通过Amazon Cognito进行身份验证
此包的规范存储库似乎已消失,因此包已被冻结。
此包尚未发布版本,且信息很少。
README
使用JSON Web Tokens (JWT)通过Amazon Cognito启用Craft身份验证。
需求
此插件需要Craft CMS 3.3或更高版本。
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的Craft项目
cd /path/to/project
-
然后告诉Composer加载插件
composer require structureit/craft-cognito-auth
-
在控制面板中,转到设置→插件,然后点击Craft Cognito Auth的“安装”按钮。
Craft Cognito Auth概述
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
此插件启用使用Amazon Cognito用户池登录Craft。使用Cognito JWT "隐式授权"(type=token)请求。
配置Craft Cognito Auth
安装后,导航到插件的设置页面并输入所需设置以激活插件
设置 | 描述 |
---|---|
自动创建用户 |
可选。激活后,当提供可验证的JWT时,将自动创建公共用户。 |
禁用公共注册时自动创建用户 |
可选。激活后,即使禁用公共注册,也会自动创建用户。 |
默认用户组 |
可选。设置要添加新创建用户的组。 |
启用CP登录按钮 |
可选。启用后,将在CP登录屏幕中添加一个按钮以使用Cognito登录。 |
自定义登录按钮文本 |
可选。用于覆盖登录Cognito按钮上的默认文本。 |
自定义登录按钮URL |
可选。用于覆盖用于登录按钮的托管UI生成的URL。 |
重定向URL |
可选。登录后用于重定向用户,默认为当前站点的基URL。 |
AWS设置 | |
用户池区域 |
必需。用户池所在地的AWS区域。 |
应用域 |
可选。用于生成登录Cognito按钮的登录链接。 |
应用客户端ID |
必需。用于生成登录链接,并验证JWT是否为正确的池创建。 |
用户池ID |
必需。用于获取Cognito用于签署JWT的密钥。 |
Cognito用户池还需要配置以允许回调URL到您的站点。这是由插件生成的,并在插件设置页面的最后“设置”中显示。回调URL是“控制面板URL(通常是/admin
)”/cognitologin
。
配置用户池
- 转到 AWS Cognito(
<region>.console.aws.amazon.com/cognito/users
)并选择您的用户池 - 转到 应用集成 / 应用客户端设置
- 在
登录和注销 URLs
下的回调 URL(s)
中添加回调 URL - 在此过程中,确保在
OAuth 2.0
|允许的 OAuth 流
下启用隐式授权
- 在底部点击 保存更改。
使用 Craft Cognito Auth
插件将尝试验证控制面板 URL(通常是 /admin
)的 /cognitologin
的传入请求中存在的 JWT。
插件将从 Cognito 获取 Json Web Token Set(JWKS),并使用它通过 PHP 的 lcobucci/jwt 包尝试验证令牌。该包遵循 IANA JWT 规范。
如果提供的令牌可以验证并且可以与具有与提供的 email
键匹配的电子邮件地址或与提供的 cognito:username
键匹配的用户名的用户账户匹配,则用户将被认证,请求将被允许继续。
如果令牌可验证,但不存在匹配的用户账户,但
- 已启用
自动创建用户
设置并且已启用公共注册 - 或已启用
自动创建用户
设置,公共注册已禁用,但已启用公共注册禁用时自动创建用户
设置
在 Craft 设置中,将现场创建新的用户账户,然后新用户登录。
Craft Cognito Auth 路线图
功能
插件提供以下功能:
- 验证传入请求的 JWT 是否存在于特定路由(CP URL 下的
cognitologin
)。 - 注入 JavaScript 从搜索参数(
#id_token=
)获取 Cognito 提供的 JWT 并将其放入查询参数(?jwt=
)中。 - 检查签名是否与配置的用户池的 Amazon 证书匹配。
- 将验证的 JWT 匹配到 Craft CMS 中的用户账户并以该用户登录。
- 如果找不到现有账户,则可选地创建新账户。
- 可选地将登录 Cognito 按钮添加到 CP 登录屏幕。
- 将
logout-redirect
路由添加到控制面板以将请求重定向回请求的页面。 - 允许使用环境变量进行文本输入设置。
原始 JWT 认证由 Mike Pierce 编写,并由 Edenspiekermann 实现。由 Matthew Carter 转换为使用 Cognito JWTs 和验证流程。由 StructureIT 开发者 维护。