Hi @jlopez ,
Just as a disclaimer, I have never dug deep into the guts and core of LTI and I have only developed LTI apps that interact specifically with Canvas. That being said, as far as I am aware, LTI apps always point to an external site. This can be iframed or it can be set to open in a new tab. When an LTI tool is launched (whether it be from Canvas or Moodle or any other platform), there are some standard pieces of information that are passed along to the external site using POST. The LTI standard dictates some essential pieces of information that are passed and how they are passed but there are additional pieces of information that can be added for a specific platform or even custom information that can be configured at the tool level. For example, Canvas passes data like:
- Some data that can be used to authenticate that it is coming from an authorized source including time data, an OAuth signature, a consumer key that can be unique to the LTI configuration, and a variety of others.
- Contextual information about where the tool was launched. Things like:
- Course name and id
- User id, name (in several formats), email, image, roles, etc.
- Return url (for passing information back)
- API domain
- Tool Name
- and quite a few others
There are ways to pass information back through LTI although this information is relatively limited (things like content or a score). However, as long as the platform you are developing for has an extensive API like Canvas, your possibilities are incredible but tied to the platforms you specifically develop for.
One of the great benefits of LTI is that you can handle authentication without making a user login to your external site. You can also go through what is often referred to as the "OAuth handshake" where a user can grant your app permission to act on their behalf within the platform.
As far as what options are far as the way your app is built from the developer's standpoint, that depends on your developer. The app can be written in almost any programming language (Ruby, PHP, Coldfusion, etc.). In fact, because it is loading an external site, you can create pretty much anything that you can think of.
Here are a few resources that can help you get started:
I am sure that there are some other good ones but I can't remember any others off the top of my head.
While maybe not quite as specific as you may have been hoping for, hopefully this will help you know what other questions you may need to ask.