WamISSO Documentation

SSO Integration Guide

Connect your application to WamISSO using OAuth 2.0 Authorization Code flow.

Base URL: https://wamisso.rendovations.com
Register as a developer at https://wamisso.rendovations.com/developer/login, get admin approval, then create an OAuth client in the developer portal to obtain a client_id (and a client_secret for server-side apps). See the developer registration guide for step-by-step instructions.

OAuth 2.0 flow

Endpoints

MethodPathDescription
GET/oauth/authorizeStart login — redirect the user here
POST/oauth/tokenExchange code or refresh token
GET/api/userUser profile (requires Bearer token)
POST/api/sso/logoutRevoke access token (requires Bearer token)
GET/.well-known/openid-configurationOpenID discovery metadata
GET/.well-known/oauth-authorization-serverOAuth metadata

Authorization request

Redirect the browser to:

https://wamisso.rendovations.com/oauth/authorize
  ?client_id={CLIENT_ID}
  &redirect_uri={REDIRECT_URI}
  &response_type=code
  &scope=openid profile email
  &state={RANDOM_STATE}

Token exchange

curl -X POST https://wamisso.rendovations.com/oauth/token \
  -H "Accept: application/json" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "redirect_uri=http://localhost:3000/callback" \
  -d "code=AUTH_CODE_FROM_CALLBACK"

Client types

TypeUse forToken exchange
ConfidentialServer-side apps (Laravel, Django, Express, PHP)client_secret sent from the backend. PKCE is optional but recommended.
PublicBrowser SPAs and mobile appsNo secret. PKCE with code_challenge_method=S256 is required; plain is rejected.

Public clients add code_challenge and code_challenge_method=S256 to the authorization request and send code_verifier instead of client_secret to /oauth/token. See the Browser SPA (PKCE) guide.

curl -X POST https://wamisso.rendovations.com/oauth/token \
  -H "Accept: application/json" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_PUBLIC_CLIENT_ID" \
  -d "redirect_uri=https://app.example.gov.ph/callback" \
  -d "code=AUTH_CODE_FROM_CALLBACK" \
  -d "code_verifier=ORIGINAL_CODE_VERIFIER"

User profile response

{
  "sub": "1",
  "name": "Juan Dela Cruz",
  "email": "user@wamisso.gov.ph",
  "email_verified": true
}

Scopes

ScopeDescription
openidIdentity verification
profileName and basic profile
emailEmail address

Global logout

When a user signs out, send the application's registered origin as post_logout_redirect_uri. WamISSO revokes both access and refresh tokens and returns a short-lived browser handoff that works with any framework:

curl -X POST https://wamisso.rendovations.com/api/sso/logout \
  -H "Accept: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  --data-urlencode "post_logout_redirect_uri=https://your-app.example.com"
{
  "message": "Successfully logged out",
  "status": "logged_out",
  "browser_logout_url": "https://wamisso.rendovations.com/sso/logout?expires=...&signature=..."
}
Always clear your local session or stored tokens even if the API call fails. When it succeeds, redirect the user's browser to browser_logout_url within two minutes; this clears the WamISSO browser session and returns to the registered application origin. Never construct this URL yourself.

Framework guides

Language guides

Production: Use HTTPS, store secrets securely, never ship a client_secret to a browser or mobile app, and register exact redirect_uri values for each client.