Repository navigation
[LTI] fix: LTI 1.3 launch fails when another request of the session runs in parallel - #12383
Merged
Saaweel merged 1 commit intoNov 5, 2026
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An LTI 1.3 object with the launch option "Embedded Content" often shows the ILIAS page itself inside the iframe, or "initialLogin Error", instead of the content of the tool. It happens whenever another request of the same session runs while the launch goes on, for example the asynchronous requests of the tree in the main bar, opening the object from "Last Visited", or the same object in two tabs. The slower the server, the more often it happens.
The launch keeps its state in the session: the page that starts the launch stores
lti_message_hint, andltiauth.phpstores the authentication request of the tool aslti13_login_databefore it redirects to the object. ILIAS writes the whole session back at the end of every request, so a parallel request that read the session earlier writes it back without these values and the launch cannot find them anymore.Fix
lti_message_hintof a launch is the object and the ILIAS client, signed with an HMAC for the session and the user. The tool sends it back unchanged, so the launch is checked without anything in the session.ltiauth.phppasses the authentication request of a launch to the object with the link it redirects to, instead of the session. The launch checks it as before and also checks the read permission of the user.Testing
On test installations, with bwGPT, an ILIAS installation as tool and saLTIre:
A launch page that was opened before the update carries a hint without signature, so its launch fails once; it works again after reloading the page.