unionco / craft-cognito-auth
启用使用 AWS Cognito 对 Craft 进行身份验证
Requires
- aws/aws-sdk-php: ^3.112
- codercat/jwk-to-pem: ^0.0.3
- craftcms/cms: ^4.0.0
- lcobucci/jwt: ^4.2.1
- litesaml/lightsaml: ^2.0
- simplesamlphp/saml2: ^4.0
This package is auto-updated.
Last update: 2024-09-05 21:03:34 UTC
README
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 或更高版本。
安装
-
按照 Craft CMS 文档 设置您的本地 Craft 实例。
-
使用 Composer 加载插件
nitro composer require unionco/craft-cognito-auth
-
在您的浏览器中,打开本地 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 设置中启用了公开注册,则将动态创建新的用户账户,然后新的用户将登录。
此插件提供示例模板,供您在构建身份验证解决方案时参考。示例模板可在 模板 文件夹中找到。
部署
- 更新
composer.json
中的版本号。 - 在
CHANGELOG.md
中添加新条目,记录所做的更改。 - 使用以下格式推送与新版本号匹配的新标签:
vX.Y.Z
。
贡献
我们非常欢迎贡献!请随意提出新的问题或发送拉取请求,以使本项目更加完善。
鸣谢
特别感谢
- craft-jwt-auth - 版权所有 (c) 2019 Mike Pierce,初始代码库采用MIT 许可证。
- @goraxan 对项目的持续开发。
许可证
本仓库受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_ID
和 AWS_SECRET_ACCESS_KEY
。