LTI login

An external provider can log users in to Bracken using the Learning Tools Interoperablitiy (LTI) process. This system is commonly used in learning platforms such as Moodle.

User experience

  1. The user logs in to the partner platform.
  2. The user clicks a link, which directs the user to the Bracken site.
  3. Bracken requests authentication information from the platform.
  4. The user arrives in the Bracken Portal.

A Bracken user account is created when the user first logs in via LTI (“autoprovisioned”).

The integration can optionally be configured to receive result notifications using the Assignment and Grade Service.

LTI integration

The single sign on is triggered by the partner platform redirecting the user to the Bracken initiate login URL. This will typically be https://<client>.bracken.cloud/auth/lti.

The request will include the following parameters, either as query parameters on a GET request, or in the body of a form POST request.

ParameterExample valueNotes
iss*https://demo-host.comIssuer, which must be configured in Bracken.
target_link_uri*https://<client>.bracken.cloudURL where to arrive after login.
lti_deployment_id42platform specific
client_idkyKGR3f5platform specific
login_hint332platform specific, often local user id
lti_message_hint0platform specific, often login request reason

Authentication provider

The partner system provides an OpenID Connect authorization service.

Upon receiving a login initiation request, Bracken will redirect the user’s browser to the configured authorization endpoint. The request may be GET or POST, and includes the following parameters.

ParameterValue
request_type*id_token
request_mode*form_post
scope*openid
redirect_uri*Must be configured in host platform service.
client_idPlatform client identifier, specified in Bracken auth provider.
stateValue to be returned with authorization response.
nonceValue to prevent request replay.
login_hintValue specified in login request.
lti_message_hintValue specified in login request.

Response

The host service redirects the browser to the analysis server with a form POST with the following values.

ParameterValue
id_tokenJWT with claims
stateTool state returned unchanged

id_token claims

The id_token JWT includes at least the following claims.

ClaimDescription
iss*Host system issuer, typically the base URL of the host.
aud*Must be the platform client identifier specified in the Bracken auth provider.
nonce*If included in the request, must be returned to the tool.
sub*Host system identifier of user.
given_name*The user’s given (first) name.
family_name*The user’s family (last) name.
email*The user’s email address.
https://purl.imsglobal.org/spec/lti/claim/deployment_idIf set, must match the deployment_id specified in the original request.
https://purl.imsglobal.org/spec/lti/claim/target_link_uriIf set, must match the target_link_url specified in the original request.

OAuth JWKS endpoint

The id_token JWT returned by the host service’s authorization endpoint must be signed with a key that is available at the host service JWKS endpoint.

Redirect URL

After the id_token has been validated, a user is autoprovisioned in Bracken if necessary, and the browser is redirected to the specified target URL.

LTI Launch

Bracken also supports LTI Launch. In this workflow, the platform prepares an id_token and POSTs it to the target endpoint directly.

  1. The platform prepares the claims described in id_token claims, above, including sub, user claims, and target_link_uri.
  2. The token is signed with the platform’s signing key.
  3. The browser is redirected to the Bracken endpoint with a form POST.
     <form action="https://demo.bracken.cloud/e/lesson/123" method="POST">
       <input type="hidden" name="id_token" value="eyJh..." />
     </form>
    
  4. On receiving the request, Bracken validates the token against the platform, auto-provisions the user and portfolio if necessary, and launches the page.