Skip to main content

Vanilla JavaScript Quickstart

Use this guide to add ThunderID authentication to a browser-based application using the @thunderid/browser SDK. No framework required.

What You Will Learn
  • Create a new JavaScript app using Vite
  • Install the @thunderid/browser package
  • Add working sign-in and sign-out
  • Display the signed-in user's profile
Prerequisites
  • About 15 minutes
  • Node.js installed on your system
  • npm, yarn, or pnpm
  • Your preferred code editor
1

Run ThunderID

Start a local ThunderID instance. Pick the method that works best for you:

$npx thunderid

Requires Node.js 18+

Full install guide →

Once it's running, the console is available at https://localhost:8090.

2

Create an Application

Open the Console at https://localhost:8090/console, navigate to Applications, and click Add Application:

  1. Under Technology, select JavaScript.
  2. Enter a name (e.g. My JavaScript App) and create an application. The rest of the settings can stay at their defaults.
  3. Copy the Client ID from the General tab. You'll need it when configuring the SDK.
  4. Under General, add http://localhost:5173 to the list of Authorized Redirect URIs.
3

Create a JavaScript App

Create your new JavaScript app using Vite:

npm create vite@latest my-js-app -- --template vanilla
cd my-js-app
npm install
4

Install @thunderid/browser

Install the ThunderID Browser SDK in your project:

npm install @thunderid/browser
5

Initialize the SDK

The ThunderIDBrowserClient serves as the main entry point for the SDK. Create a new file to initialize and export the client instance.

Create src/auth.js with the following:

src/auth.js
import { ThunderIDBrowserClient } from '@thunderid/browser'

const auth = new ThunderIDBrowserClient()

await auth.initialize({
clientId: '<your-client-id>',
baseUrl: 'https://localhost:8090',
afterSignInUrl: window.location.origin,
afterSignOutUrl: window.location.origin,
})

export default auth
Configuration

Replace <your-client-id> with the Client ID you obtained when creating the application in ThunderID.

Configuration Parameters

ParameterDescription
clientIdThe Client ID from your ThunderID application
baseUrlYour ThunderID instance URL (e.g., https://localhost:8090)
afterSignInUrlURL to redirect to after sign-in (defaults to current origin)
afterSignOutUrlURL to redirect to after sign-out (defaults to current origin)
6

Add Sign-In and Sign-Out

Replace the content of src/main.js with the following to add sign-in and sign-out functionality:

src/main.js
import './style.css'
import auth from './auth.js'

async function renderApp() {
const isSignedIn = await auth.isSignedIn()

if (isSignedIn) {
const user = await auth.getUser()

document.querySelector('#app').innerHTML = `
<div>
<h1>ThunderID Auth Demo</h1>
<div class="card">
<h2>Welcome, ${user.displayName || user.username}!</h2>
<div class="user-details">
<p><strong>Email:</strong> ${user.email || 'N/A'}</p>
<p><strong>Username:</strong> ${user.username || 'N/A'}</p>
</div>
<button id="sign-out-btn" type="button">Sign Out</button>
</div>
</div>
`

document.querySelector('#sign-out-btn')
.addEventListener('click', () => auth.signOut())
} else {
document.querySelector('#app').innerHTML = `
<div>
<h1>ThunderID Auth Demo</h1>
<div class="card">
<p>You are not signed in.</p>
<button id="sign-in-btn" type="button">Sign In</button>
</div>
</div>
`

document.querySelector('#sign-in-btn')
.addEventListener('click', () => auth.signIn())
}
}

renderApp()
7

Update the HTML Entry Point

Replace the content of index.html to provide a clean entry point:

index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ThunderID JavaScript Demo</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
8

Run Your App

Start the development server:

npm run dev

Visit your app at http://localhost:5173

Test credentials

You'll need a user to sign in with. If you haven't created one yet, open https://localhost:8090/console, navigate to Users, and add a test user with an email and password.

Success

You should see the sign-in button. Click it to be redirected to the ThunderID-hosted sign-in page. Authenticate with your test user, then return to your app with the user profile displayed.

What's Next

ThunderID LogoThunderID Logo

Product

DocsAPIsSDKs
© WSO2 LLC. All rights reserved.Privacy PolicyCookie Policy