packbackbooks/lti-1p3-tool

一个用于在PHP中构建IMS认证的LTI 1.3工具提供商的库。

v6.2.0 2024-09-16 15:11 UTC

README

Test status Maintainability Test Coverage

一个用于在PHP中构建IMS认证的LTI 1.3工具提供商的库。

此库允许工具提供商(您的应用程序)从工具消费者(例如LMS)接收LTI启动。它验证LTI启动,并允许应用程序与命名角色配置服务(获取LMS课程的名单)和作业成绩服务(更新LMS中课程学生的成绩)等服务交互。

此库是从 IMSGlobal/lti-1-3-php-library 分支出来的,最初由 @MartinLenord 创建。 Packback 认为此库非常有用,并在几年内扩展了它。Packback已经重写了它,以使其符合PHP-FIG和IMS LTI 1.3认证过程规定的标准。Packback积极使用并维护此库。

安装

运行

composer require packbackbooks/lti-1p3-tool

在您的代码中,您现在可以使用 Packback\Lti1p3 命名空间中的类来访问库。

配置JWT

在启动您的应用程序时添加以下内容。

Firebase\JWT\JWT::$leeway = 5;

实现数据存储接口

此库使用三种方法来存储和访问数据:缓存、cookie和数据库。所有三种都必须实现,以便库可以工作。只要它们遵守以下接口,您就可以创建自己的自定义实现:

  • Packback\Lti1p3\Interfaces\ICache
  • Packback\Lti1p3\Interfaces\ICookie
  • Packback\Lti1p3\Interfaces\IDatabase 或可选的 Packback\Lti1p3\Interfaces\IMigrationDatabase

查看 Laravel 实现指南 以查看示例(或直接复制/粘贴代码)。

创建 JWKS 端点

可以为单个注册或从 KID 和私钥的数组生成 JWKS(JSON Web Key Set)端点。

use Packback\Lti1p3\JwksEndpoint;

// From issuer
JwksEndpoint::fromIssuer($database, 'http://example.com')->getPublicJwks();
// From registration
JwksEndpoint::fromRegistration($registration)->getPublicJwks();
// From array
JwksEndpoint::new(['a_unique_KID' => file_get_contents('/path/to/private/key.pem')])->getPublicJwks();

文档

维基 提供了更多关于如何使用此库的详细信息,包括 Laravel 实现指南

贡献

对于改进、建议或错误修复,请提交拉取请求或问题。在提交拉取请求之前,添加对您的更改的自动化测试,确保所有测试都通过,并修复任何linting错误。

测试

可以使用以下命令运行自动化测试

composer test

可以使用以下命令运行linting

# Display linting errors
composer lint
# Automatically fix linting errors
composer lint-fix