@savant-realms/federated-auth-realm-sdk-ts-js
v0.4.17
Published
Federated Auth Realm - SDK Ts/Js
Downloads
132
Readme
Federated Auth Realm TS/JS SDK
A comprehensive TypeScript/JavaScript SDK for the Federated Auth Realm, enabling easy integration of multi-app authentication and authorization.
Features
- Built-in Session Management: Handles
accessTokenandrefreshTokenautomatically. - Axios Interceptors: Automatically injects Bearer tokens and handles token refresh logic (401 response).
- Universal Storage: Support for
LocalStorage(browser) andMemoryStorage(server-side). - Full API Coverage: Methods for registration, login (email/Google/Facebook), profile management, and more.
- SRWP Support: Savant Realms Workspace Protocol discovery for realm-to-realm communication.
Installation
npm install federated-auth-realm-sdk-ts-jsBasic Usage
Initialization
import {
FederatedAuthRealmClient,
LocalStorageProvider,
} from 'federated-auth-realm-sdk-ts-js';
const client = new FederatedAuthRealmClient({
baseURL: 'https://api.federatedauthrealm.com/v1',
appKey: 'your-app-key',
storage: new LocalStorageProvider(), // Optional, defaults to LocalStorageProvider
onSessionExpired: () => {
// Redirect to login page
window.location.href = '/login';
},
});Authentication
// Login
const auth = await client.login({
email: '[email protected]',
password: 'password',
});
// Check if authenticated
const isAuthenticated = await client.isAuthenticated();
// Get current user
const user = await client.getUser();
// Logout
await client.logout();Profile Management
const profile = await client.getProfile();
await client.updateProfile({
name: 'Updated Name',
metadata: { theme: 'dark' },
});Token Verification (Server-side)
Back-end services can verify tokens without knowing the JWT_SECRET by using the realm's verification endpoint:
const result = await client.verifyToken('user-access-token');
if (result.valid) {
console.log('Token is valid for user:', result.user);
} else {
console.log('Token is invalid');
}SRWP Discovery
import { SRWPDiscoveryClient } from 'federated-auth-realm-sdk-ts-js';
const discovery = new SRWPDiscoveryClient(
'https://api.federatedauthrealm.com/v1'
);
const knownRealms = await discovery.getKnownRealms();Advanced Storage
For server-side usage (Node.js), use MemoryStorageProvider or implement your own StorageProvider:
import { MemoryStorageProvider } from 'federated-auth-realm-sdk-ts-js';
const client = new FederatedAuthRealmClient({
baseURL: '...',
appKey: '...',
storage: new MemoryStorageProvider(),
});Development
npm install
npm run build
npm testLicense
MIT
