PHPackages                             groton-school/slim-lti-partitioned-session - 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. groton-school/slim-lti-partitioned-session

ActiveLibrary

groton-school/slim-lti-partitioned-session
==========================================

Negotiate CHIPS partitioned third party session cookies from an embedded LTI Tool

2.2.0(7mo ago)0309[2 PRs](https://github.com/groton-school/slim-lti-partitioned-session/pulls)GPL-3.0PHPCI passing

Since Aug 6Pushed 1mo agoCompare

[ Source](https://github.com/groton-school/slim-lti-partitioned-session)[ Packagist](https://packagist.org/packages/groton-school/slim-lti-partitioned-session)[ RSS](/packages/groton-school-slim-lti-partitioned-session/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (12)Versions (17)Used By (0)

groton-school/slim-lti-partitioned-session
==========================================

[](#groton-schoolslim-lti-partitioned-session)

Negotiate CHIPS partitioned third party session cookies from an embedded LTI Tool

[![Latest Version](https://camo.githubusercontent.com/d1242803aba1c4e808c160ca5c2ab97b49b2db8c83b721ebf5ee616b09d10a6f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f67726f746f6e2d7363686f6f6c2f736c696d2d6c74692d706172746974696f6e65642d73657373696f6e2e737667)](https://packagist.org/packages/groton-school/slim-lti-partitioned-session)

Caution
-------

[](#caution)

This package is likely going to be fragmented into three separate, more-focused packages in the near future: one to [implement a partitioned session cookie version of `Odan\Session\PhpSession`](https://github.com/groton-school/slim-lti-partitioned-session/commit/acc6830582f672d1955a39403a4c00cdce746a4a), one to [negotiate the third-party cookie on the Slim Framework](https://github.com/groton-school/slim-lti-partitioned-session/blob/main/src/RouteBuilder.php), and [one to implement the LTI `LaunchHandler`](https://github.com/groton-school/slim-lti-partitioned-session/blob/main/src/Handlers/LaunchHandler.php) that directs into the third-party cookie negoation.

Install
-------

[](#install)

```
composer require groton-school/slim-lti-partitioned-session
```

Use
---

[](#use)

This implementation expects a default [slim-skeleton](https://github.com/slimphp/Slim-Skeleton#readme) and relies on [groton-school/slim-lti-shim](https://github.com/groton-school/slim-lti-shim#readme) and [packbackbooks/lti-1p3-tool](https://github.com/packbackbooks/lti-1-3-php-library#readme) for core LTI Tool functionality.

1. Optionally, implement [`SettingsInterface`](https://github.com/groton-school/slim-lti-partitioned-session/blob/main/src/SettingsInterface.php) -- alternatively[`DefaultSettings`](https://github.com/groton-school/slim-lti-partitioned-session/blob/main/src/DefaultSettings.php) are available
2. [Define the dependency on either your `SettingsInterface` implementaton or the `DefaultSettings` implementation](https://github.com/groton-school/slim-skeleton/blob/0b32f964d753376ed2c2d9af4460e96342bbe919/app/dependencies.php#L26-L27)
3. [Inject remaining dependencies](https://github.com/groton-school/slim-skeleton/blob/0b32f964d753376ed2c2d9af4460e96342bbe919/app/dependencies.php#L22)
4. [Register the cookie-negotiation routes](https://github.com/groton-school/slim-skeleton/blob/0b32f964d753376ed2c2d9af4460e96342bbe919/app/routes.php#L21-L23)

### groton-school/slim-skeleton@dev-gae/lti-tool

[](#groton-schoolslim-skeletondev-gaelti-tool)

[groton-school/slim-skeleton](https://github.com/groton-school/slim-skeleton/tree/gae/lti-tool) is the canonical example of how this shim is meant to be used.

How
---

[](#how)

Given the insidiuous prevalance of user-tracking web technologies, and the use of third-party cookies to facilitate them, many browsers have imposed hard limits on the use of third-party cookies. This is awkward, because the LTI standard is built on the assumption that a) third-party cookies will be readily available for the OIDC handshake and launch and b) most resources will be embedded in a third-party IFRAME context.

This package provides a modified `LaunchHandler` compatible with [groton-school/slim-lti-shim](https://github.com/groton-school/slim-lti-shim) that injects a third-party cookie test into the LTI Tool launch. This is paired with the `PartitionedSession` middleware that ensures that a) all session cookies are sent as both `Secure` and `Partitioned` (which is enough for Chromium-based browsers).

If third-party cookies cannot be initially set (as is the case when working with Safari and other WebKit-based browsers using [ITP](https://www.cookiestatus.com/safari/)), a more interactive permissions-handshake with the user is required. The package negotiates this handshake and then uses the `PartitionedSession` middleware to resume the originally-launched LTI Tool session and provide the LTI resource.

[![sequence diagram](./docs/sequence.png)](./docs/sequence.png)

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance78

Regular maintenance activity

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~5 days

Total

13

Last Release

221d ago

Major Versions

1.3.5 → 2.0.02025-09-09

### Community

Maintainers

![](https://www.gravatar.com/avatar/d0554a28104c65004c6de4d335ada25cf2763c8a9691dc5611314486d461fa4c?d=identicon)[battis](/maintainers/battis)

---

Top Contributors

[![battis](https://avatars.githubusercontent.com/u/419619?v=4)](https://github.com/battis "battis (65 commits)")

---

Tags

chipsitpltilti-toollti1p3session-managementslim-frameworkslim4third-party-cookies

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/groton-school-slim-lti-partitioned-session/health.svg)

```
[![Health](https://phpackages.com/badges/groton-school-slim-lti-partitioned-session/health.svg)](https://phpackages.com/packages/groton-school-slim-lti-partitioned-session)
```

###  Alternatives

[respect/validation

The most awesome validation engine ever created for PHP

5.9k37.4M383](/packages/respect-validation)[bref/bref

Bref is a framework to write and deploy serverless PHP applications on AWS Lambda.

3.4k9.6M55](/packages/bref-bref)[phlak/directory-lister

PHP directory lister

2.5k1.4k](/packages/phlak-directory-lister)[rareloop/lumberjack-core

A powerful MVC framework for the modern WordPress developer. Write better, more expressive and easier to maintain code

42155.0k19](/packages/rareloop-lumberjack-core)[neos/flow

Flow Application Framework

862.0M451](/packages/neos-flow)[bacula-web/bacula-web

The open source web based reporting and monitoring tool for Bacula

1537.5k](/packages/bacula-web-bacula-web)

PHPackages © 2026

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