unionco/craft-cognito-auth

启用使用 AWS Cognito 对 Craft 进行身份验证

安装: 7

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 2

开放问题: 0

类型:craft-plugin

dev-master 2022-09-05 16:45 UTC

This package is auto-updated.

Last update: 2024-09-05 21:03:34 UTC


README

Logo

Craft Cognito Auth 插件

通过 AWS Cognito 启用对 Craft 的身份验证。

概述

此插件可以在存在可成功验证为与 JWKS 签名匹配的 Cognito JWT 的情况下,安全地认证对 Craft 的请求。

JSON Web Tokens 是一种开放、行业标准的 RFC 7519 方法,用于在双方之间安全地表示声明。

-- jwt.io

功能

  • 使用 Cognito 创建和验证用户。
  • 通过 JWT 从移动应用和网站对 Craft 的请求进行身份验证。
  • SAML 身份验证。

要求

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

安装

  1. 按照 Craft CMS 文档 设置您的本地 Craft 实例。

  2. 使用 Composer 加载插件

    nitro composer require unionco/craft-cognito-auth

  3. 在您的浏览器中,打开本地 Craft 控制面板,转到设置 → 插件,然后点击 Craft Cognito Auth 的“安装”按钮。

配置

转到插件的设置页面,输入所需设置以激活插件

此插件假定 AWS Cognito 已配置,以便 用户使用电子邮件而不是用户名进行注册和登录,并且正在使用的应用程序客户端已启用服务器端身份验证的登录 API(ADMIN_NO_SRP_AUTH),如 AWS 文档中所述

使用方法

插件将尝试验证任何包含带有“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 设置中启用了公开注册,则将动态创建新的用户账户,然后新的用户将登录。

此插件提供示例模板,供您在构建身份验证解决方案时参考。示例模板可在 模板 文件夹中找到。

部署

  1. 更新 composer.json 中的版本号。
  2. CHANGELOG.md 中添加新条目,记录所做的更改。
  3. 使用以下格式推送与新版本号匹配的新标签:vX.Y.Z

贡献

我们非常欢迎贡献!请随意提出新的问题或发送拉取请求,以使本项目更加完善。

鸣谢

特别感谢

许可证

本仓库受MIT 许可证保护。

联合资源

添加客户端密钥设置:[https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_RequestParameters](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_RequestParameters) 还未记录在案 - 为了对任何 AWS 服务进行认证,您必须使用合适的程序访问 IAM 用户(在这种情况下,用户必须拥有 Cognito 访问权限)配置 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY