PHPackages                             packbackbooks/lti-1p3-tool - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. packbackbooks/lti-1p3-tool

ActiveLibrary[API Development](/categories/api)

packbackbooks/lti-1p3-tool
==========================

A library used for building IMS-certified LTI 1.3 tool providers in PHP.

v6.4.3(1mo ago)51438.3k↑20.5%25[5 issues](https://github.com/packbackbooks/lti-1-3-php-library/issues)[1 PRs](https://github.com/packbackbooks/lti-1-3-php-library/pulls)2Apache-2.0PHPPHP ^8.1CI passing

Since Jan 13Pushed 1mo ago5 watchersCompare

[ Source](https://github.com/packbackbooks/lti-1-3-php-library)[ Packagist](https://packagist.org/packages/packbackbooks/lti-1p3-tool)[ RSS](/packages/packbackbooks-lti-1p3-tool/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (16)Versions (76)Used By (2)

LTI 1.3 Tool Library
====================

[](#lti-13-tool-library)

[![Test status](https://github.com/packbackbooks/lti-1-3-php-library/actions/workflows/run_tests.yml/badge.svg?branch=master)](https://github.com/packbackbooks/lti-1-3-php-library/actions/workflows/run_tests.yml/badge.svg?branch=master) [![Coverage Status](https://camo.githubusercontent.com/a9d047041e630c0c297c8ac1585105fb58ddf8f928518f5d71e08a323f84a0b3/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f7061636b6261636b626f6f6b732f6c74692d312d332d7068702d6c6962726172792f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/packbackbooks/lti-1-3-php-library?branch=master)

A library used for building IMS-certified LTI 1.3 tool providers in PHP.

This library allows a tool provider (your app) to receive LTI launches from a tool consumer (i.e. LMS). It validates LTI launches and lets an application interact with services like the Names Roles Provisioning Service (to fetch a roster for an LMS course) and Assignment Grades Service (to update grades for students in a course in the LMS).

This library was forked from [IMSGlobal/lti-1-3-php-library](https://github.com/IMSGlobal/lti-1-3-php-library), initially created by @MartinLenord. [Packback](https://packback.co) found the library immensely helpful and extended it over the years. It has been rewritten by Packback to bring it into compliance with the standards set out by the PHP-FIG and the IMS LTI 1.3 Certification process. Packback actively uses and maintains this library.

Installation
------------

[](#installation)

Run:

```
composer require packbackbooks/lti-1p3-tool
```

In your code, you will now be able to use classes in the `Packback\Lti1p3` namespace to access the library.

### Configure JWT

[](#configure-jwt)

Add the following when bootstrapping your app.

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

### Implement Data Storage Interfaces

[](#implement-data-storage-interfaces)

This library uses three methods for storing and accessing data: cache, cookie, and database. All three must be implemented in order for the library to work. You may create your own custom implementations so long as they adhere to the following interfaces:

- `Packback\Lti1p3\Interfaces\ICache`
- `Packback\Lti1p3\Interfaces\ICookie`
- `Packback\Lti1p3\Interfaces\IDatabase` or optionally `Packback\Lti1p3\Interfaces\IMigrationDatabase`

View the [Laravel Implementation Guide](https://github.com/packbackbooks/lti-1-3-php-library/wiki/Laravel-Implementation-Guide) to see examples (or copy/paste the code outright).

### Create a JWKS endpoint

[](#create-a-jwks-endpoint)

A JWKS (JSON Web Key Set) endpoint can be generated for either an individual registration or from an array of `KID`s and private keys.

```
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();
```

Documentation
-------------

[](#documentation)

[The wiki](https://github.com/packbackbooks/lti-1-3-php-library/wiki) provides more detailed information about how to use this library, including a [Laravel Implementation Guide](https://github.com/packbackbooks/lti-1-3-php-library/wiki/Laravel-Implementation-Guide).

Contributing
------------

[](#contributing)

For improvements, suggestions or bug fixes, make a pull request or an issue. Before opening a pull request, add automated tests for your changes, ensure that all tests pass, and any linting errors are fixed.

### Testing

[](#testing)

Automated tests can be run using the command:

```
composer test
```

Linting can be run using

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

###  Health Score

65

—

FairBetter than 99% of packages

Maintenance87

Actively maintained with recent releases

Popularity51

Moderate usage in the ecosystem

Community32

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 64.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~28 days

Recently: every ~72 days

Total

68

Last Release

53d ago

Major Versions

v1.1.1 → v2.0.02021-06-24

v2.0.3 → v3.0.02021-09-22

v3.0.3 → v4.0.02021-10-29

v4.1.3 → v5.0.02022-01-18

v5.x-dev → v6.0.02024-02-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/71f594bf2ce90f3f9e13935fee43290efea84b8ec1b53503fc0361680a8c6df4?d=identicon)[dbhynds](/maintainers/dbhynds)

![](https://www.gravatar.com/avatar/2f5e3ee485874ddc9fbc6a82d02a12cf2abb766de0c435334d1e5fed8c9ee4af?d=identicon)[packback-deployer](/maintainers/packback-deployer)

---

Top Contributors

[![dbhynds](https://avatars.githubusercontent.com/u/849626?v=4)](https://github.com/dbhynds "dbhynds (643 commits)")[![MartinLenord](https://avatars.githubusercontent.com/u/10765490?v=4)](https://github.com/MartinLenord "MartinLenord (98 commits)")[![lin-brian-l](https://avatars.githubusercontent.com/u/29388364?v=4)](https://github.com/lin-brian-l "lin-brian-l (63 commits)")[![cophaso](https://avatars.githubusercontent.com/u/8699045?v=4)](https://github.com/cophaso "cophaso (33 commits)")[![pbcraig](https://avatars.githubusercontent.com/u/38537396?v=4)](https://github.com/pbcraig "pbcraig (24 commits)")[![pb-sobrien](https://avatars.githubusercontent.com/u/39270127?v=4)](https://github.com/pb-sobrien "pb-sobrien (24 commits)")[![JanHolger](https://avatars.githubusercontent.com/u/25184957?v=4)](https://github.com/JanHolger "JanHolger (23 commits)")[![zlayaAvocado](https://avatars.githubusercontent.com/u/50310535?v=4)](https://github.com/zlayaAvocado "zlayaAvocado (18 commits)")[![mattwright](https://avatars.githubusercontent.com/u/500715?v=4)](https://github.com/mattwright "mattwright (10 commits)")[![EricTendian](https://avatars.githubusercontent.com/u/498525?v=4)](https://github.com/EricTendian "EricTendian (10 commits)")[![Watercycle](https://avatars.githubusercontent.com/u/5145006?v=4)](https://github.com/Watercycle "Watercycle (8 commits)")[![jonahl](https://avatars.githubusercontent.com/u/10552822?v=4)](https://github.com/jonahl "jonahl (8 commits)")[![snake](https://avatars.githubusercontent.com/u/118769?v=4)](https://github.com/snake "snake (7 commits)")[![alessandrodolci](https://avatars.githubusercontent.com/u/27001991?v=4)](https://github.com/alessandrodolci "alessandrodolci (4 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![jlegault-packback](https://avatars.githubusercontent.com/u/98757291?v=4)](https://github.com/jlegault-packback "jlegault-packback (4 commits)")[![danielTiringer](https://avatars.githubusercontent.com/u/53534182?v=4)](https://github.com/danielTiringer "danielTiringer (3 commits)")[![AramayisO](https://avatars.githubusercontent.com/u/40707951?v=4)](https://github.com/AramayisO "AramayisO (2 commits)")[![gkreitz](https://avatars.githubusercontent.com/u/4375339?v=4)](https://github.com/gkreitz "gkreitz (2 commits)")[![Otterfan](https://avatars.githubusercontent.com/u/210404?v=4)](https://github.com/Otterfan "Otterfan (2 commits)")

---

Tags

ltilti-toollti1p3LTI

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/packbackbooks-lti-1p3-tool/health.svg)

```
[![Health](https://phpackages.com/badges/packbackbooks-lti-1p3-tool/health.svg)](https://phpackages.com/packages/packbackbooks-lti-1p3-tool)
```

###  Alternatives

[google/apiclient

Client library for Google APIs

9.8k191.4M997](/packages/google-apiclient)[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k96.9M674](/packages/laravel-socialite)[wheelpros/fitment-platform-api

Magento 2 (Open Source)

12.1k1.2k](/packages/wheelpros-fitment-platform-api)[get-stream/stream

A PHP client for Stream (https://getstream.io)

1451.3M8](/packages/get-stream-stream)[hoels/app-store-server-library-php

The PHP server library for the App Store Server API and App Store Server Notifications.

44162.2k](/packages/hoels-app-store-server-library-php)[agence104/livekit-server-sdk

Server-side SDK for LiveKit.

79189.9k1](/packages/agence104-livekit-server-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
