BankID
BankID är Sveriges ledande e-legitimation med över 8 miljoner användare. TIC Identity hanterar hela integrationen åt dig.
Översikt
BankID används för säker identifiering och digital signering. TIC Identity abstraherar komplexiteten i BankID:s API och ger dig ett enkelt REST-gränssnitt.
| Funktion | Stöd |
|---|---|
| Autentisering | ✓ |
| Digital signering | ✓ |
| QR-kod (annan enhet) | ✓ |
| Autostart (samma enhet) | ✓ |
| Animerad QR-kod | ✓ |
| simpleMarkdownV1 | ✓ |
Så fungerar det
QR-kod flöde (rekommenderat)
- Du startar en session via API:t
- Du visar en animerad QR-kod för användaren
- Användaren skannar QR-koden med BankID-appen
- Användaren identifierar sig med fingeravtryck/kod
- Du pollar för status och får resultat
Autostart flöde (samma enhet)
- Du startar en session via API:t
- Du redirectar till
bankid:///?autostarttoken={token}&redirect={url} - BankID-appen öppnas automatiskt
- Användaren identifierar sig
- Användaren redirectas tillbaka till din app
Animerad QR-kod
BankID:s QR-koder uppdateras varje sekund för att förhindra replay-attacker. QR-koden beräknas med HMAC-SHA256.
Format
bankid.{qrStartToken}.{time}.{qrAuthCode}
Beräkning
const crypto = require('crypto');
function generateQrCode(qrStartToken, qrStartSecret, secondsElapsed) {
const hmac = crypto.createHmac('sha256', qrStartSecret);
hmac.update(secondsElapsed.toString());
const qrAuthCode = hmac.digest('hex');
return `bankid.${qrStartToken}.${secondsElapsed}.${qrAuthCode}`;
}
// Uppdatera varje sekund
let elapsed = 0;
setInterval(() => {
const qrData = generateQrCode(token, secret, elapsed++);
renderQrCode(qrData);
}, 1000);
GET /api/v1/auth/{sessionId}/qr
istället för att beräkna den själv.
Användarmeddelanden (RFA)
BankID definierar standardmeddelanden (RFA - Recommended for Action) som ska visas för användaren baserat på status. TIC Identity returnerar dessa automatiskt i API-svaren.
| hintCode | Svenska | English |
|---|---|---|
outstandingTransaction |
Starta BankID-appen. | Start your BankID app. |
started |
Söker efter BankID... | Searching for BankID... |
userSign |
Skriv in din säkerhetskod i BankID-appen... | Enter your security code in the BankID app... |
userCancel |
Åtgärden avbröts. | The action was cancelled. |
expiredTransaction |
BankID-appen svarar inte... | The BankID app is not responding... |
certificateErr |
Ditt BankID är för gammalt eller spärrat... | Your BankID is blocked or too old... |
startFailed |
Misslyckades att läsa av QR-koden... | Failed to scan the QR code... |
Hämta alla meddelanden via GET /api/v1/messages?language=sv
Sessionslivscykel
Tidsgränser
| Parameter | Värde | Beskrivning |
|---|---|---|
| Session | 5 minuter | Total tid för autentisering (WCAG 2.1) |
| BankID-order | 30 sekunder | Varje QR-kod är giltig i 30 sekunder |
| Polling-intervall | 2 sekunder | Rekommenderat intervall för status-polling |
Order-regenerering
TIC Identity regenererar automatiskt BankID-ordern var 25:e sekund
(innan 30-sekundersutgången). Nya qrStartToken och
qrStartSecret returneras i poll-svaret.
Förlängning (WCAG)
För tillgänglighet kan sessionen förlängas en gång via
POST /api/v1/auth/{sessionId}/extend, vilket ger
ytterligare 5 minuter.
Säkerhet
- TLS 1.3: All kommunikation krypteras
- Klientcertifikat: TIC Identity autentiserar sig mot BankID med certifikat
- IP-validering: Slutanvändarens IP loggas och kan valideras av BankID
- Animerad QR: Förhindrar replay-attacker
- Personnummer: Kan begränsas till specifik användare
endUserIp.
Felaktig IP kan leda till blockerade sessioner och är ett brott mot
BankID:s avtal.
Testmiljö
TIC Identity är konfigurerat mot BankID:s testmiljö i utvecklingsläge. Använd BankID:s testapp för att testa.
Test-personnummer
Skapa test-BankID på demo.bankid.com med valfritt personnummer (t.ex. 199001011234).
Testapp
Ladda ner BankID-testappen från BankID:s utvecklarportal.