In a nutshell: on rare occasions our locally-developed LTI Tools are giving an error after Import Course Content, even though other courses with the LTI Tool in the same node are working fine. The error: HTTP Status 401 - launch.no.validate: signature_invalid
I have filed a ticket, but am not having much luck with support. Has anyone else seen this issue? If so, how did you resolve it?
--- Long version ---
We have locally-developed LTI Tools that are added at the account/sub-account levels. These tools have been in use for a few years. Some instructors have course content in manually-created courses, others have course content in provisioned courses from an older semester.
The instructors then enter the newly-provisioned course for the current term, click on Settings -> Import Course Content, which takes them to the Import Content page. Here they can select the content type, (Copy a Canvas Course), and can then select All content or select specific content.
In most cases, when instructors import a Canvas course, whether the old course had the locally-developed LTI tools or not, the LTI tools in the new course work. In some cases, the LTI tool gives an error: HTTP Status 401 - launch.no.validate: signature_invalid
Since the tool was added at the node, the tool cannot be removed and re-added since other courses in that node are using the tool. The tool ID is correct on the rare occasion when we see the error.
I have tried adding the tool at the course level (with a different name so they're easy to tell apart) which has its own ID, but even the tool added at the course level brings back the same error.
Since 99% of the time we have no problems with the LTI tools when course content is imported from another course, (even if it's on a different node and has the LTI tool - the tool in the current, newly-provisioned course has the ID for that node), I'm thinking there is an occasional glitch with Import Course Content on the Canvas side.
I have done extensive testing with all variations of import, export/import, moving courses between nodes, etc., and cannot reproduce the error so cannot determine what is causing this.