Best Practices
Recommended practices for secure authentication
Reading time: 1 minute
Best Practices
1. Secure Storage
Secure Storagejavascript
// ā
Correct - use environment variables
const hmacSecret = process.env.HMAC_SECRET;
// ā Wrong - store in code
const hmacSecret = 'my-secret-key-123';2. Error Handling
Error Handlingjavascript
1234567891011121314151617181920212223242526272829async function makeAuthenticatedRequest(endpoint, data) { try { const timestamp = Math.floor(Date.now() / 1000); const signature = generateSignature(/* ... */); const response = await fetch(endpoint, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'X-Awal-Signature-256': signature, 'X-Timestamp': timestamp.toString(), 'X-Domain': process.env.WORKSPACE_DOMAIN, 'X-Client-ID': process.env.CLIENT_ID, }, body: JSON.stringify(data), }); if (!response.ok) { const error = await response.json(); throw new Error(`API Error: ${error.message}`); } return await response.json(); } catch (error) { console.error('Request error:', error); throw error; } }
3. Caching
Tip: Don't cache signatures. Generate a new signature for each request.
Cachingjavascript
// ā
Correct - new signature for each request
const signature1 = generateSignature(/* ... */);
await makeRequest(signature1);
const signature2 = generateSignature(/* ... */);
await makeRequest(signature2);
// ā Wrong - reusing signature
const signature = generateSignature(/* ... */);
await makeRequest(signature);
await makeRequest(signature); // will failRelated
ā Back to Authentication
View Guide