LTI 1.3 Registration vs Deployment in edX Instances and IDs

In LTI 1.3, there is the concept of an issuer and platform instance. What is the concept of an instance within edX? (e.g. Is an institution considered an instance?) From observation, edX uses the same issuer URL for all instances?

My questions stem from scoping IDs to avoid collisions? What can we scope as globally unique - sub, client id, deployment id? Could we probably use just issuer as the ID namespace? If not, we will be storing users and classes multiple times (with the same IDs) because they are associated to different registrations (for every assignment).

Hi, hi_assist!

An engineer or developer will be able to answer your q about the concept of an instance better (and if I’m misstating anything, hopefully, someone will correct me), but for what it’s worth, I tend to think of instances within edX as their own unique platforms with their own registration and login portals that all happen to use (largely) the same code (minus forks and whatnot). At edX, there are two instances where people can go to take courses: edx.org and edge.edx.org. An institution for its part might offer courses on one or both instances.

To your question about issuer URLs: One of our partners recently had a similar question, so I looked into this a bit. After some testing, it looks like different instances have different issuer URLs. To check this on your end, you can do the following:

  1. (In Studio, in a unit) Set the LTI Launch Target within the edit screen of the xblock to “New Window”.
  2. Publish your unit and click on the “View Live Version” button.
  3. From the live view, click on the “View resource in a new window” button.
  4. This should take you to a new page.
  5. Look at the URL in the address bar and look for the “iss” parameter value.

In my test, I noticed that the URL exposes some parameters which I think get plugged into one’s LTI tool on the tool’s end. Among them was an “iss” (or issuer) parameter. When running through these steps on edx.org, the issuer parameter I got back was https://courses.edx.org/. When I tried this on edge.edx.org, I got back a different issuer parameter value.

I hope this helps!