bnsoftware/lti-1p3-tool

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

v5.2.1 2022-09-01 15:48 UTC

README

这是一个正在进行中的项目 - 目前不应使用此库!

如果您正在寻找一个可靠的LTI v1.3 PHP包,请务必查看由Packback创建的packbackbooks/lti-1p3-tool

测试状态

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

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

此库是从由Packback创建的packbackbooks/lti-1p3-tool分叉的,而该工具又是由IMSGlobal/lti-1-3-php-library分叉的,最初由@MartinLenord创建。

安装

运行

composer require bnsoftware/lti-1p3-tool

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

配置JWT

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

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

实现数据存储接口

此库使用三种方法来存储和访问数据:缓存、Cookie和数据库。所有三种都必须实现,以便库能够工作。您可以根据以下接口创建自己的自定义实现:

  • BNSoftware\Lti1p3\Interfaces\ICache
  • BNSoftware\Lti1p3\Interfaces\ICookie
  • BNSoftware\Lti1p3\Interfaces\IDatabase

查看Laravel实现指南以获取示例(或直接复制/粘贴代码)。如果您不希望实现自己的,则在BNSoftware\Lti1p3\ImsStorage\中提供了缓存和Cookie存储的遗留实现。但是,您必须实现自己的数据库。

创建JWKS端点

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

use BNSoftware\Lti1p3\JwksEndpoint;

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

文档

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

贡献

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

测试

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

composer test

可以使用以下命令运行linting

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