Thunder
Thunder is a Go based Identity and Access Management product by WSO2
Install / Use
/learn @asgardeo/ThunderREADME
WSO2 Thunder ⚡
Identity Management Suite
Thunder is a modern, open-source identity management service designed for teams building secure, customizable authentication experiences across applications, services, and AI agents. It enables developers to design and orchestrate login, registration, and recovery flows using a flexible identity flow designer.
Designed for extensibility, scalability, and seamless containerized deployment, Thunder integrates naturally with microservices and DevOps environments—serving as the core identity layer for your cloud platform.
🚀 Features
- Standards-Based
- OAuth 2/ OpenID Connect (OIDC): Client Credentials, Authorization Code, Refresh Token
- Login Options:
- Basic Authentication (Username/Password)
- Social Logins: Google, Github
- SMS OTP
- Registration Options:
- Username/Password
- Social Registration: Google, Github
- SMS OTP
- RESTful APIs:
- App Native Login/Registration
- User Management
- Application Management
- Identity Provider Management
- Message Notification Sender Management
⚡ Quickstart
This Quickstart guide will help you get started with WSO2 Thunder quickly. It walks you through downloading and running the product, trying out the sample app, and exploring registering a user, logging in, and using the Client Credentials flow.
Download and Run WSO2 Thunder
You can run WSO2 Thunder either by downloading the release artifact or using the official Docker image.
Option 1: Run from Release Artifact
Follow these steps to download the latest release of WSO2 Thunder and run it locally.
-
Download the distribution from the latest release
Download
thunder-<version>-<os>-<arch>.zipfrom the latest release for your operating system and architecture.For example, if you are using a MacOS machine with a Apple Silicon (ARM64) processor, you would download
thunder-<version>-macos-arm64.zip. -
Unzip the product
Unzip the downloaded file using the following command:
unzip thunder-<version>-<os>-<arch>.zipNavigate to the unzipped directory:
cd thunder-<version>-<os>-<arch>/ -
Setup the product
You need to setup the server with the initial configurations and data before starting the server for the first time.
If you are using a Linux or macOS machine:
./setup.shIf you are using a Windows machine:
.\setup.ps1Note the id of the sample app indicated with the log line
[INFO] Sample App ID: <id>. You'll need it for the sample app configuration. -
Start the product
If you are using a Linux or macOS machine:
./start.shIf you are using a Windows machine:
.\start.ps1The product will start on
https://localhost:8090.
Option 2: Run with Docker Compose
Follow these steps to run WSO2 Thunder using Docker Compose.
-
Download the Docker Compose file
Download the
docker-compose.ymlfile using the following command:curl -o docker-compose.yml https://raw.githubusercontent.com/asgardeo/thunder/v0.33.0/install/quick-start/docker-compose.yml -
Start Thunder
Run the following command in the directory where you downloaded the
docker-compose.ymlfile:docker compose upThis will automatically:
- Initialize the database
- Run the setup process
- Start the Thunder server
Note the id of the sample app indicated with the log line
[INFO] Sample App ID: <id>in the setup logs. You'll need it for the sample app configuration.The product will start on
https://localhost:8090.
Try Out the Product
Try out the Thunder Console
Follow these steps to access the Thunder Console:
-
Open your browser and navigate to https://localhost:8090/console.
-
Log in using the admin credentials created during the initial data setup (
admin/admin).
Try Out with the Sample App
Thunder provides two sample applications to help you get started quickly:
- React Vanilla Sample — Sample React application demonstrating direct API integration without external SDKs. Supports Native Flow API or Standard OAuth/OIDC.
- React SDK Sample — Sample React application demonstrating SDK-based integration using
@asgardeo/reactfor OAuth 2.0/OIDC authentication.
React Vanilla Sample
-
Download the sample
Download
sample-app-react-vanilla-<version>-<os>-<arch>.zipfrom the latest release. -
Unzip and navigate to the sample app directory
unzip sample-app-react-vanilla-<version>-<os>-<arch>.zip cd sample-app-react-vanilla-<version>-<os>-<arch>/ -
Configure the sample
Open
app/runtime.jsonand set theapplicationIDto the sample app ID generated during "Setup the product":{ "applicationID": "{your-application-id}" } -
Start the sample
./start.shOpen your browser and navigate to https://localhost:3000 to access the sample app.
📖 Refer to the
README.mdinside the extracted sample app for detailed configuration options including OAuth redirect-based login.
React SDK Sample
-
Download the sample
Download
sample-app-react-sdk-<version>-<os>-<arch>.zipfrom the latest release. -
Unzip and navigate to the sample app directory
unzip sample-app-react-sdk-<version>-<os>-<arch>.zip cd sample-app-react-sdk-<version>-<os>-<arch>/ -
Start the sample
./start.shOpen your browser and navigate to https://localhost:3000 to access the sample app.
📖 Refer to the
README.mdinside the extracted sample app for detailed configuration and troubleshooting.
Self Register and Login (React Vanilla Sample)
The React Vanilla sample supports user self-registration and login:
-
Open https://localhost:3000 and click "Sign up" to register a new user.
<p align="left"> <img src="resources/images/sample-app-self-registration-basic.png" alt="Self Registration Username Password" width="400"> </p> -
After registration, use the same credentials to "Sign In".
<p align="left"> <img src="resources/images/sample-app-login.png" alt="Login to Sample App" width="400"> </p> -
Upon successful login, you'll see the home page with your access token.
Obtain System API Token
To access the system APIs of Thunder, you need a token with system permissions. Follow the steps below to obtain a system API token.
- Run the following command, replacing
<application_id>with the sample app ID generated during "Setup the product."
curl -k -X POST 'https://localhost:8090/flow/execute' \
-d '{"applicationId":"<application_id>","flowType":"AUTHENTICATION"}'
- Extract the
executionIdvalue from the response.
{"executionId":"<execution_id>","flowStatus":"INCOMPLETE", ...}
- Run the following command, replacing
<execution_id>with theexecutionIdvalue you extracted above.
curl -k -X POST 'https://localhost:8090/flow/execute' \
-d '{"executionId":"<execution_id>", "inputs":{"username":"admin","password":"admin", "requested_permissions":"system"},"action": "action_001"}'
- Obtain the system API token by extracting the
assertionvalue from the response.
{"executionId":"<execution_id>","flowStatus":"COMPLETE","data":{},"assertion":"<assertion>"}
Try Out Client Credentials Flow
The Client Credentials flow is used to obtain an access token for machine-to-machine communication. This flow does not require user interaction and is typically used for server-to-server communication.
To try out the Client Credentials flow, follow these steps:
-
Create a Client Application
Application creation is secured functionality, so you first need to obtain a system API token as mentioned in the "Obtain System API Token" section above.
Run the following command, replacing
<assertion>with the assertion value obtained from the previous step.curl -kL -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' https://localhost:8090/applications \ -H 'Authorization: Bearer <assertion>' \ -d '{ "name": "Test Sample App", "description": "Initial testing App", "inbound_auth_config": [ { "type": "oauth2", "config": { "client_id": "<client_id>", "client_secret": "<client_secret>", "redirect_uris": [ "https://localhost:3000" ], "grant_types": [ "client_credentials" ], "token_endpoint_auth_method": "client_secret_basic", "pkce_required": false, "public_client": false, "scopes": ["api:read", "api:write"] } }
Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
xurl
354.3kA CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
