Overview
Veydra supports LTI 1.3 (Learning Tools Interoperability), the industry standard for connecting learning tools to Learning Management Systems. Once configured, students can launch Veydra labs directly from their LMS course — no separate login required.LTI 1.3 is an IMS Global standard supported by virtually every modern LMS including Moodle, Canvas, Blackboard, Brightspace, Sakai, Schoology, and Open edX.
How It Works
When a student clicks a Veydra activity in their LMS:- The LMS sends a secure, signed request to Veydra (OIDC login + JWT)
- Veydra verifies the request and identifies the student
- A Veydra account is automatically created (or linked) for the student
- The student is granted access to the assigned lab with the configured role
- The student lands directly in the lab — no additional sign-up needed
Supported LMS Platforms
Moodle
Full LTI 1.3 support with auto-fill configuration
Canvas
Instructure Canvas with Developer Key integration
Blackboard
Blackboard Learn Ultra with REST API integration
D2L Brightspace
Brightspace with standard LTI Advantage
Sakai
Open-source LMS with LTI 1.3 support
Schoology
PowerSchool Schoology LTI 1.3 apps
Prerequisites
Before configuring LTI:You have a Veydra account with lab management permissions
You have at least one lab created in Veydra (Account → Manage Labs)
You have administrator access to your LMS
Your LMS supports LTI 1.3 (not the older LTI 1.1)
Step 1: Get Your Tool Configuration
Every Veydra account has a set of public URLs that you’ll enter into your LMS. These identify Veydra as an external tool provider.Open LTI Integrations
Sign in at app.veydra.io and go to Account → LTI Integrations in the sidebar (under the Labs section).
Copy the Tool Configuration URLs
At the top of the page you’ll see the Your Tool Configuration card with four values:
Use the Copy button next to each value.
| Field | Description | Example |
|---|---|---|
| Tool URL / Launch URL | Where the LMS sends the launch request | https://api.veydra.io/lti/launch |
| Login Initiation URL | Where the LMS begins the OIDC flow | https://api.veydra.io/lti/login |
| Redirect URI(s) | Allowed redirect targets after login | https://api.veydra.io/lti/launch |
| Public Keyset URL (JWKS) | Veydra’s public keys for signature verification | https://api.veydra.io/lti/jwks |
Step 2: Register Veydra in Your LMS
This step happens inside your LMS admin panel. The exact steps vary by platform — choose your LMS below:Moodle
Moodle
- Go to Site administration → Plugins → Activity modules → External tool → Manage tools
- Click configure a tool manually
- Fill in:
- Tool name:
Veydra(or any name you prefer) - Tool URL: paste the Tool URL / Launch URL from Veydra
- LTI version: select LTI 1.3
- Public key type: select Keyset URL
- Public keyset: paste the Public Keyset URL (JWKS) from Veydra
- Initiate login URL: paste the Login Initiation URL from Veydra
- Redirection URI(s): paste the Redirect URI(s) from Veydra
- Tool name:
- Under Tool configuration usage, select Show as preconfigured tool when adding an external tool
- Click Save changes
- Moodle will display the tool’s configuration details — copy the Client ID (you’ll need it in Step 3)
You can also find the Client ID later by clicking “View configuration details” on the tool’s entry in the Manage tools list.
Canvas
Canvas
- Go to Admin → Developer Keys → + Developer Key → + LTI Key
- Choose Manual Entry (or paste a JSON config URL if available)
- Fill in:
- Key Name:
Veydra - Redirect URIs: paste the Redirect URI(s) from Veydra
- Target Link URI: paste the Tool URL / Launch URL from Veydra
- OpenID Connect Initiation URL: paste the Login Initiation URL from Veydra
- JWK Method: select Public JWK URL, paste the Public Keyset URL (JWKS) from Veydra
- Key Name:
- Click Save — Canvas generates a Client ID (a long number). Copy it.
- Enable the key by toggling its State to ON
- Go to Settings → Apps → + App → By Client ID and paste the Client ID to install at the course/account level
Blackboard Learn (Ultra)
Blackboard Learn (Ultra)
- Go to System Admin → Integrations → LTI Tool Providers → Register LTI 1.3 Tool
- Enter the Client ID (you may need to register the application first via the Developer Portal to obtain one)
- Fill in:
- Tool Provider URL: paste the Tool URL / Launch URL
- Login Initiation URL: paste the Login Initiation URL
- Tool Redirect URL(s): paste the Redirect URI(s)
- Tool JWKS URL: paste the Public Keyset URL (JWKS)
- Set Tool Status to Approved
- Copy the Client ID and Deployment ID shown in the confirmation
D2L Brightspace
D2L Brightspace
- Go to Manage Extensibility → LTI Advantage (or External Learning Tools → Manage Tool Providers)
- Click New Registration / Register Tool
- Fill in:
- Name:
Veydra - Domain:
api.veydra.io - Redirect URLs: paste the Redirect URI(s)
- OpenID Connect Login URL: paste the Login Initiation URL
- Keyset URL: paste the Public Keyset URL (JWKS)
- Target Link URI: paste the Tool URL / Launch URL
- Name:
- Click Register — Brightspace generates a Client ID and Deployment ID. Copy both.
- Create a Deployment and link it to the desired org units (courses)
Sakai
Sakai
- Go to Administration Workspace → External Tools (LTI) or the site’s External Tools page
- Click Install LTI 1.x Tool
- Fill in:
- Tool Title:
Veydra - Launch URL: paste the Tool URL / Launch URL
- LTI 1.3: check the checkbox
- OIDC Auth Endpoint: paste the Login Initiation URL
- OIDC Token Endpoint: (leave blank — Veydra uses key-based validation)
- OIDC Keyset URL: paste the Public Keyset URL (JWKS)
- Redirect URL(s): paste the Redirect URI(s)
- Tool Title:
- Click Save — copy the generated Client ID
Schoology (PowerSchool)
Schoology (PowerSchool)
- Go to System Settings → Integration → External Tools → Add External Tool Provider
- Set the LTI version to 1.3
- Fill in:
- Tool Name:
Veydra - Launch URL: paste the Tool URL / Launch URL
- OpenID Connect Login: paste the Login Initiation URL
- Redirect URIs: paste the Redirect URI(s)
- JWKS URL: paste the Public Keyset URL (JWKS)
- Tool Name:
- Save and copy the generated Client ID
Open edX
Open edX
- Go to Django Admin → LTI 1.3 (via
/admin/) or Studio → Advanced Settings - Add a new LtiToolKey with:
- Name:
Veydra - Key type:
jwk_url - JWK URL: paste the Public Keyset URL (JWKS)
- Name:
- Add a new LtiTool and fill in:
- Tool Name:
Veydra - Launch URL: paste the Tool URL / Launch URL
- OIDC Login URL: paste the Login Initiation URL
- Redirect URIs: paste the Redirect URI(s)
- Tool Name:
- Copy the Client ID from the created tool entry
OLI Torus
OLI Torus
- In Torus admin, go to Institutions → Registration or LTI 1.3 Tool Configuration
- Fill in:
- Tool Name:
Veydra - Target Link URI: paste the Tool URL / Launch URL
- OIDC Login Init URL: paste the Login Initiation URL
- Redirect URIs: paste the Redirect URI(s)
- JWK Set URL: paste the Public Keyset URL (JWKS)
- Tool Name:
- Save and copy the generated Client ID and Deployment ID
Step 3: Register the Platform in Veydra
Now go back to Veydra and tell it about your LMS so it can validate incoming launch requests.Click Register Platform
On the LTI Integrations page (
Account → LTI Integrations), click the Register Platform button.Select Your LMS Type
Choose your LMS from the LMS Type dropdown. This auto-fills the endpoint URL paths so you only need to enter your LMS base URL.Supported presets: Moodle, Canvas, Blackboard Learn (Ultra), D2L Brightspace, Sakai, Schoology (PowerSchool), Open edX, OLI Torus.
Fill in Platform Details
| Field | Required | Description |
|---|---|---|
| Platform Name | Yes | A friendly name (e.g. “My University Moodle”) |
| Issuer (Platform ID) | Yes | Your LMS base URL (e.g. https://moodle.university.edu). When you type this with a preset selected, the endpoint URLs auto-fill. |
| Client ID | Yes | The ID your LMS generated in Step 2 |
| Deployment ID | No | Some LMS platforms provide this alongside the Client ID |
| Authentication Login URL | Yes | Auto-filled by preset, or enter manually |
| Access Token URL | Yes | Auto-filled by preset, or enter manually |
| Public Keyset URL (JWKS) | Yes | Auto-filled by preset, or enter manually |
| Default Lab | No | The lab that students land on by default when launching from this LMS |
| Default Role | No | Student (default), Viewer, or Instructor — the Veydra role assigned to users who launch via LTI |
Step 4: Add Veydra to a Course
With the platform registered, you can now add Veydra as an activity in your LMS courses.Moodle
Moodle
- Go to your course → Turn editing on
- Click Add an activity or resource → External tool
- Select Veydra from the Preconfigured tool dropdown
- Optionally set a custom Activity name (e.g. “System Dynamics Lab — Population Model”)
- To send students to a specific lab, expand Tool configuration → Custom parameters and add:
- Click Save and display to test the launch
Canvas
Canvas
- Go to your course → Assignments or Modules → Add Item → External Tool
- Select Veydra from the list
- To target a specific lab, add
?lab_slug=your-lab-slugto the launch URL, or use Canvas’s custom parameter field - Save and test
Blackboard / Brightspace / Sakai / Schoology
Blackboard / Brightspace / Sakai / Schoology
The general process is the same across platforms:
- Navigate to your course content area
- Add a new External Tool / LTI Link activity
- Select the registered Veydra tool
- Optionally configure the
lab_slugcustom parameter to target a specific lab - Save and test the launch as a student
Managing Platforms
Editing a Registration
From Account → LTI Integrations, click Edit on any registered platform to update its details (name, URLs, default lab, or default role). Changes take effect immediately.Deleting a Registration
Click Delete on a platform registration. You’ll be asked to confirm. Once deleted, students will no longer be able to launch from that LMS.Viewing & Changing Default Lab
The Default Lab column in the platforms table shows which lab students land on after launch. To change it, edit the platform and select a different lab from the dropdown. You can also leave it blank and rely on thelab_slug custom parameter per activity.
User Provisioning
When a student launches Veydra from an LMS for the first time, the system automatically:- Looks for an existing linked account — if the student has launched before, they’re signed in immediately
- Matches by email — if the student’s LMS email matches an existing Veydra account, the accounts are linked
- Creates a new account — if no match is found, a new Veydra account is created using the student’s name and email from the LMS
Instructors in the LMS are mapped to the Veydra role configured on the platform registration (default: Student). To give LMS instructors elevated access, you can change the default role or grant them permissions manually in Account → Manage Labs.
Roles & Permissions
The role assigned to LTI users determines what they can do inside a lab:| Role | Can View Models | Can Adjust Parameters | Can Edit Structure | Can Manage Users |
|---|---|---|---|---|
| Student | ✓ | ✓ | ✗ | ✗ |
| Viewer | ✓ | ✗ | ✗ | ✗ |
| Instructor | ✓ | ✓ | ✓ | ✓ |
Troubleshooting
Launch fails with "Platform not found"
Launch fails with "Platform not found"
The Issuer URL in Veydra doesn’t match what the LMS is sending. Verify:
- The Issuer field matches your LMS base URL exactly (including
https://and no trailing slash) - The Client ID matches the one your LMS generated
Launch fails with "Invalid token"
Launch fails with "Invalid token"
The JWT signature couldn’t be verified. Check:
- The Public Keyset URL (JWKS) on the platform registration points to the correct LMS endpoint
- Your LMS’s keyset URL is accessible from the internet (not behind a firewall)
Students land on the wrong lab (or no lab)
Students land on the wrong lab (or no lab)
- Check the Default Lab setting on the platform registration
- Verify the
lab_slugcustom parameter in the LMS activity configuration - Ensure the lab exists and is active in Account → Manage Labs
Students get "Access denied" after launch
Students get "Access denied" after launch
The student’s account was created but not granted access. This can happen if the lab’s access control changed after the initial launch. Go to Account → Manage Labs → [Lab] → Users and verify the student’s role.
"Authentication required" on platform management endpoints
"Authentication required" on platform management endpoints
You must be signed in to Veydra to manage platform registrations. The Tool Configuration URLs (JWKS, Login, Launch) are public and don’t require authentication.
Security
Veydra’s LTI implementation follows IMS Global security best practices:- OIDC + JWT: Every launch is authenticated via OpenID Connect with signed JWTs — no shared secrets
- RSA key pairs: Veydra maintains its own RSA keypair; the public key is served via a standard JWKS endpoint
- Nonce validation: Each login request includes a one-time nonce that expires after 10 minutes
- No password storage: LTI users authenticate through their LMS; Veydra never sees or stores LMS passwords
- Firebase Auth: After JWT validation, users receive a standard Firebase session — the same authentication used by all Veydra users

