extension to manage LTI services for TAO

Installs: 76 970

Dependents: 11

Suggesters: 0

Security: 0

Stars: 4

Watchers: 50

Forks: 3


v15.19.2 2024-04-22 15:40 UTC

This package is auto-updated.

Last update: 2024-04-22 15:42:16 UTC


TAO Logo

GitHub GitHub release GitHub commit activity codecov

Extension to manage LTI services for TAO

Installation instructions

These instructions assume that you have already a TAO installation on your system. If you don't, go to package/tao and follow the installation instructions.

If you installed your TAO instance through package/tao, oat-sa/extension-tao-lti is very likely already installed. You can verify this under Settings -> Extension manager, where it would appear on the left hand side as taoLti. Alternatively you would find it in the code at /config/generis/installation.conf.php.

Note, that you have to be logged in as System Administrator to do this.

Add the extension to your TAO composer and to the autoloader:

composer require oat-sa/extension-tao-lti

Install the extension on the CLI from the project root:


sudo php tao/scripts/installExtension oat-sa/extension-tao-lti


php tao\scripts\installExtension oat-sa/extension-tao-lti

As a system administrator you can also install it through the TAO Extension Manager:

  • Settings (the gears on the right hand side of the menu) -> Extension manager
  • Select taoLti on the right hand side, check the box and hit install



Configuration options


Description: this specifies LTI client configuration.

If the configuration file is not present as ../config/generis/ServiceOptions.conf.php, create it by copying from ../generis/config/default/ServiceOptions.conf.php.



return new oat\generis\model\DependencyInjection\ServiceOptions(
        oat\taoLti\models\classes\Client\LtiClientFactory::class => [
            'config' => [    // This configuration accepts
                'proxy' => [ // [Guzzle Request Options](https://docs.guzzlephp.org/en/stable/request-options.html)
                    'http'  => 'http://localhost:8125',
                    'https' => 'https://localhost:9124',


Configuration option config

Description: this specifies a single option as the adapter key of the array. This adapter is to be used to authenticate LTI requests and is retrieved in FactoryLtiAuthAdapterService.

Possible values of the adapter key:

  • an instance of any class that implements the common_user_auth_Adapter interface

Value examples:

  • ['config' => ['adapter' => 'oat\\taoLti\\models\\classes\\LtiAuthAdapter']]


Configuration option verify_cookie

Description: This option determine whether to check if the 'session' request parameter matches the internal PHP session ID before launching an LTI tool

Possible values:

  • true: enable the session check. 2 more HTTP redirects are needed
  • false: disable the session check


Configuration option factoryLtiUser

Description: factory for producing LTI users

Possible values:

  • an instance of any class that implements the oat\taoLti\models\classes\user\LtiUserFactoryInterface interface

Configuration option transaction-safe (only for OntologyLtiUserService implementation)

Description: not used

Configuration option transaction-safe-retry (only for OntologyLtiUserService implementation)

Description: not used

Configuration option lti_ku_ (only for KvLtiUserService implementation)

Description: a prefix for storing taoId => ltiId relation in the key-value storage to look up LTI users

Possible values:

  • any unique string

Configuration option lti_ku_lkp_ (only for KvLtiUserService implementation)

Description: a prefix for storing ltiId => taoId relation in the key-value storage to execute reverse lookup

Possible values:

  • any unique string


Configuration option launchDataValidator

Description: specifies a list of validators to be used for validating LTI launch data

Possible values:

  • a list of instances of any classes that implement the LtiValidatorInterface interface. Validators should throw LtiException in case of not valid data, return values are not considered

Value examples:

  • [ new oat\taoLti\models\classes\LaunchData\Validator\Lti11LaunchDataValidator() ]

Dependency Injection Service Providers


Configuration for AuthorizationServerFactory

ENV variable Required Description
LTI_AUTHORIZATION_SERVER_FACTORY_ENCRYPTION_KEY Yes Encryption key for Authorization server factory
LTI_DEFAULT_SCOPE No, default value is https://purl.imsglobal.org/spec/lti-bo/scope/basicoutcome A scope for score repository

Extension Wiki

You can find the extension wiki here.