Siirry sisältöön

Autentikointi

Kirjapro käyttää Supabase Auth -palvelua PKCE (Proof Key for Code Exchange) -flowlla.

Supabase Auth palauttaa JWT access tokenin kirjautumisen yhteydessä.

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

JWT sisältää:

{
"sub": "user-uuid",
"email": "user@example.com",
"role": "authenticated",
"aud": "authenticated",
"exp": 1234567890
}
KenttäKuvaus
subKäyttäjän UUID
emailKäyttäjän sähköposti
roleAina “authenticated”
expVanhentumisaika (Unix timestamp)

Access token vanhenee oletuksena tunnissa. Refresh token uusii sen automaattisesti.

const { data: { session } } = await supabase.auth.getSession();
const accessToken = session?.access_token;
const response = await fetch(
`${SUPABASE_URL}/functions/v1/send-einvoice`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
'apikey': SUPABASE_ANON_KEY,
},
body: JSON.stringify({ invoiceId: 'uuid' }),
}
);

Webhookit (Maventa, Stripe) käyttävät HMAC-SHA256 signature -varmennusta.

const signature = req.headers.get('X-Maventa-Signature');
const expectedSignature = createHmac('sha256', webhookSecret)
.update(JSON.stringify(payload))
.digest('hex');
if (signature !== expectedSignature) {
return new Response('Invalid signature', { status: 401 });
}
import Stripe from 'stripe';
const stripe = new Stripe(STRIPE_SECRET_KEY);
const sig = req.headers.get('stripe-signature');
const event = stripe.webhooks.constructEvent(
await req.text(),
sig,
STRIPE_WEBHOOK_SECRET
);
  • Kaikki data on suojattu käyttäjäkohtaisesti
  • API-avaimet salataan ennen tallennusta
  • Rate limiting suojaa väärinkäytöltä