PHPackages                             msdwivedi/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. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. msdwivedi/lti-1p3-tool

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

msdwivedi/lti-1p3-tool
======================

LTI 1.3 tool provider library with security updates (fork from packbackbooks/lti-1-3-php-library).

v1.0.0(2mo ago)019↑33.3%Apache-2.0PHPPHP ^8.1

Since Feb 20Pushed 2mo agoCompare

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

READMEChangelogDependencies (8)Versions (2)Used By (0)

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

39

—

LowBetter than 86% of packages

Maintenance83

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 64.6% 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

Unknown

Total

1

Last Release

88d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5e993dd889ad03bdc470f579576c959135c7aa5cf5c5b40c03ab12b38d6800ea?d=identicon)[msdwivedi](/maintainers/msdwivedi)

---

Top Contributors

[![dbhynds](https://avatars.githubusercontent.com/u/849626?v=4)](https://github.com/dbhynds "dbhynds (636 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 (54 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)")[![jonahl](https://avatars.githubusercontent.com/u/10552822?v=4)](https://github.com/jonahl "jonahl (8 commits)")[![Watercycle](https://avatars.githubusercontent.com/u/5145006?v=4)](https://github.com/Watercycle "Watercycle (8 commits)")[![snake](https://avatars.githubusercontent.com/u/118769?v=4)](https://github.com/snake "snake (6 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![alessandrodolci](https://avatars.githubusercontent.com/u/27001991?v=4)](https://github.com/alessandrodolci "alessandrodolci (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)")[![cmcfadden](https://avatars.githubusercontent.com/u/211655?v=4)](https://github.com/cmcfadden "cmcfadden (2 commits)")[![Otterfan](https://avatars.githubusercontent.com/u/210404?v=4)](https://github.com/Otterfan "Otterfan (2 commits)")[![AramayisO](https://avatars.githubusercontent.com/u/40707951?v=4)](https://github.com/AramayisO "AramayisO (2 commits)")

---

Tags

LTI

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[google/auth

Google Auth Library for PHP

1.4k272.7M162](/packages/google-auth)[laravel/socialite

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

5.7k96.9M674](/packages/laravel-socialite)[packbackbooks/lti-1p3-tool

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

51438.3k2](/packages/packbackbooks-lti-1p3-tool)[ellaisys/aws-cognito

AWS Cognito package that allows Auth and other related features using the AWS SDK for PHP

120220.7k1](/packages/ellaisys-aws-cognito)[clerkinc/backend-php

2755.0k](/packages/clerkinc-backend-php)[kinde-oss/kinde-auth-php

Kinde PHP SDK for authentication

2369.5k3](/packages/kinde-oss-kinde-auth-php)

PHPackages © 2026

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