API-dokumentation
Avancerade autentiseringsmönster — OAuth 2.0, JWT, nyckelrotation
Behärska sofistikerade autentiseringsmekanismer för att integrera Smart Money API i företagsmiljöer. Lär dig OAuth 2.0-flöden, JWT-tokenmönster, säker nyckelrotation och implementering av multi-faktorautentisering.
Publicerad 21 mars 2026
•
18 min läsning
•
Avancerad
Autentiseringsöversikt
Smart Money API stöder flera autentiseringsmetoder som är utformade för att passa olika applikationsarkitekturer, säkerhetskrav och organisatoriska policys. Att förstå dessa mönster säkerställer att din integration är både säker och presterande.
Autentisering i Smart Money API fungerar över tre primära lager:
- API-nycklar — Enkel bearer token-autentisering för utveckling och enkla integrationer
- JWT-tokens — Tillståndslösa, kryptografiskt signerade tokens för distribuerade system och mikrotjänster
- OAuth 2.0 — Delegerat auktoriseringsramverk för tredjepartsintegrationer och SaaS-applikationer
Säkerhetsprincip: Exponera aldrig autentiseringsuppgifter i klientkod, loggar, versionshantering eller felmeddelanden. Implementera regelbunden och omedelbar nyckelrotation vid kompromettering.
Varje metod har distinkta fördelar. API-nycklar fungerar bäst för backend-till-backend-kommunikation där autentiseringsuppgifterna är kontrollerade. JWT-tokens är överlägsna i distribuerade arkitekturer utan delat tillstånd. OAuth 2.0 ger användardelegerad åtkomst för tredjepartsapplikationer.
API-nyckelautentisering
API-nycklar är den enklaste autentiseringsmekanismen—de är slumpmässiga strängar som genereras för ditt konto och identifierar din applikation för Smart Money API. Varje förfrågan måste innehålla din API-nyckel antingen som en header eller en frågeparameter.
Header-baserad API-nyckel
Det rekommenderade tillvägagångssättet är att skicka din API-nyckel i Authorization-headern med hjälp av Bearer-schemat:
curl -X GET "https://api.smartmoneyapi.com/v1/whales/btc" \
-H "Authorization: Bearer sk_live_1234567890abcdef" \
-H "Accept: application/json"
Frågeparameter API-nyckel
För WebSocket-anslutningar eller när headers inte kan ändras, skicka API-nyckeln som en frågeparameter:
ws://localhost:8877/ws?api_key=sk_live_1234567890abcdef
// Etablerar autentiserad WebSocket-ström
API-nyckelns egenskaper
| Egenskap |
Beskrivning |
| Format |
128-tecken lång hex-sträng med prefixet sk_test_ eller sk_live_ |
| Omfattning |
Ärver alla behörigheter från kontot som skapade den |
| Utgångsdatum |
Upphör aldrig automatiskt; måste roteras manuellt |
| Rotation |
Generera ny nyckel, migrera trafik och inaktivera sedan den gamla nyckeln |
| Begränsningar för antal förfrågningar |
Delas över alla förfrågningar som använder samma nyckel |
Säkerhetsrutiner för API-nycklar
- Miljövariabler — Lagra nycklar i .env-filer (som inte ingår i versionskontroll) och ladda dem vid körning
- Vault-system — Använd HashiCorp Vault, AWS Secrets Manager eller Azure Key Vault i produktion
- Separata nycklar — Förvalta separata test- och live-nycklar; rotera testnycklar regelbundet
- Minimal omfattning — Skapa separata nycklar för olika integrationer när det är möjligt
- Granskningsloggning — Logga alla API-nyckelskapande och användningshändelser
Få din API-nyckel på 30 sekunder
Redo att bygga? Hämta en gratis API-nyckel (200 anrop/dag, inget kort behövs) och börja hämta live-data om valhajar, finansiering och on-chain-data.
Få din API-nyckel →
Bearer Token-mönster
Bearer-tokens utökar det enkla API-nyckelkonceptet genom att lägga till kontext, förfallotid och uppdateringsmekanismer. De är idealiska för applikationer som behöver programmatisk hantering av autentiseringsuppgifter.
Hämta Bearer-tokens
Växla din API-nyckel och hemlighet mot en bearer-token som är giltig i 24 timmar:
curl -X POST "https://api.smartmoneyapi.com/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_1234567890",
"api_secret": "secret_abc123xyz"
}'
Token-svarsformat
Slutpunkten returnerar en bearer-token med metadata:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "refresh_1234567..."
}
Använda Bearer-tokens
Inkludera token i Authorization-headern för alla efterföljande förfrågningar:
curl -X GET "https://api.smartmoneyapi.com/v1/derivatives/funding-heatmap" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Token-uppdateringsflöde
När en token närmar sig sin förfallotid, använd refresh-token för att få en ny utan att behöva din API-hemlighet:
curl -X POST "https://api.smartmoneyapi.com/v1/auth/refresh" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "refresh_1234567..."
}'
OAuth 2.0-implementering
OAuth 2.0 gör det möjligt för användare att bevilja applikationer tillgång till sina Smart Money API-konton utan att dela autentiseringsuppgifter. Detta är viktigt för SaaS-plattformar, tredjepartsintegrationer och applikationer med flera innehavare.
OAuth 2.0 Authorization Code Flow
Standardflödet för webbapplikationer:
- Användaren initierar inloggning — Användaren klickar på "Anslut med Smart Money API"
- Omdirigering till auktoriseringsserver — Din app omdirigerar användaren till Smart Moneys auktoriseringsslutpunkt
- Användaren beviljar tillstånd — Användaren granskar begärda scope och beviljar åtkomst
- Auktoriseringskod returnerad — Användaren omdirigeras tillbaka med en auktoriseringskod
- Växla kod mot token — Backend växlar koden mot en åtkomsttoken (koden exponeras aldrig för frontend)
- Lagra token — Lagra uppdateringstoken säkert; använd åtkomsttoken för API-anrop
Steg 1: Omdirigera användaren till auktoriseringsslutpunkten
// URL för att omdirigera användaren till
const authUrl = new URL('https://api.smartmoneyapi.com/oauth/authorize');
authUrl.searchParams.append('client_id', 'your_client_id');
authUrl.searchParams.append('redirect_uri', 'https://yourapp.com/callback');
authUrl.searchParams.append('response_type', 'code');
authUrl.searchParams.append('scope', 'whales derivatives onchain');
authUrl.searchParams.append('state', generateRandomState());
window.location.href = authUrl.toString();
Steg 2: Hantera återanrop och utbyte av kod
// Backend hanterar /callback-rutt
const code = req.query.code;
const storedState = req.session.state;
const receivedState = req.query.state;
// Verifiera state-parameter
if (storedState !== receivedState) {
throw new Error('State mismatch - CSRF-attack upptäckt');
}
// Byt kod mot token
const tokenResponse = await fetch('https://api.smartmoneyapi.com/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
grant_type: 'authorization_code',
code: code,
client_id: process.env.OAUTH_CLIENT_ID,
client_secret: process.env.OAUTH_CLIENT_SECRET,
redirect_uri: 'https://yourapp.com/callback'
})
});
const tokens = await tokenResponse.json();
// Lagra tokens säkert
OAuth-scopes
Begär endast de scopes som din applikation behöver. Smart Money API definierar dessa scopes:
| Scope |
Beskrivning |
| whales |
Åtkomst till spårning av valletthållning och ackumuleringsmått för stora investerare |
| derivatives |
Åtkomst till terminer, perpetuals och finansieringsratedata |
| onchain |
Åtkomst till on-chain-transaktionsflöden och analyser |
| alerts |
Skapa och hantera webhook-varningar |
| offline |
Åtkomst till uppdateringstokens för att få nya åtkomsttokens offline |
JWT-tokenhantering
JWT (JSON Web Tokens) tillhandahåller tillståndslös autentisering—servern behöver inte lagra sessionsdata. Smart Money API använder RS256 (RSA-signatur med SHA-256) för tokensignering, vilket möjliggör verifiering utan att kontakta API:et.
JWT-struktur
JWT-tokens består av tre delar separerade med punkter:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFjY3QxMjM0In0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
// HEADER.PAYLOAD.SIGNATURE
JWT-header
Headern identifierar algoritmen och tokentypen:
{
"alg": "RS256",
"typ": "JWT",
"kid": "1"
}
JWT-payload-claims
Payloaden innehåller claims (påståenden om användaren/appen):
{
"sub": "acct_1234567890",
"name": "Trading Bot",
"iat": 1703001600,
"exp": 1703088000,
"scopes": ["whales", "derivatives"],
"aud": "https://api.smartmoneyapi.com"
}
Verifiera JWT-signaturer
Ladda ner Smart Moneys publika nyckel och verifiera tokens innan du accepterar dem:
const jwt = require('jsonwebtoken');
const fs = require('fs');
// Hämta publika nyckeln från Smart Money API
const publicKey = fs.readFileSync('smartmoney-public.pem');
// Verifiera token
try {
const decoded = jwt.verify(token, publicKey, {
algorithms: ['RS256'],
audience: 'https://api.smartmoneyapi.com',
issuer: 'https://api.smartmoneyapi.com'
});
// Token är giltig, använd avkodade claims
} catch (err) {
// Token ogiltig eller utgången
}
Nyckelrotationsstrategi
Regelbunden nyckelrotation är avgörande för att upprätthålla säkerheten. Även med perfekta säkerhetsrutiner, anta att nycklar kan komprometteras och implementera systematisk rotation.
Rotationsfrekvens
Smart Money rekommenderar olika rotationsscheman baserat på nyckeltyp och användning:
| Nyckeltyp |
Rekommenderad rotation |
Minsta rotation |
| Test-API-nycklar |
Månadsvis |
Kvartalsvis |
| Produktions-API-nycklar |
Kvartalsvis |
Årligen |
| OAuth-uppdateringstokens |
Automatisk (efter 90 dagar) |
Manuell (efter 180 dagar) |
| Tjänstekontonycklar |
Halvårsvis |
Årligen |
Nedtidsfri rotationsprocess
Rotera nycklar utan avbrott i tjänsten:
- Generera ny nyckel — Skapa ny API-nyckel via dashboard eller API
- Distribuera ny nyckel — Uppdatera applikationshemligheter i staging, testa noggrant
- Gradvis utrullning — Distribuera till 10% av servrarna, övervaka för fel
- Fullständig lansering — Distribuera till återstående servrar
- Verifiera trafik — Bekräfta att alla förfrågningar använder ny nyckel
- Inaktivera gammal nyckel — Markera gammal nyckel som inaktiv men ta inte bort omedelbart
- Ta bort gammal nyckel — Efter 48 timmar utan fel, ta bort permanent
Nödvändig nyckelrotation
Om du misstänker att en nyckel har komprometterats:
// Omedelbar åtgärd: Inaktivera komprometterad nyckel
curl -X POST "https://api.smartmoneyapi.com/v1/keys/sk_live_xxx/revoke" \
-H "Authorization: Bearer token"
// Generera ersättningsnyckel omedelbart
curl -X POST "https://api.smartmoneyapi.com/v1/keys" \
-H "Content-Type: application/json" \
-d '{
"name": "Nödvändig ersättningsnyckel"
}'
Automatiserad rotation i Kubernetes
Använd Kubernetes Secrets och operators för automatisk rotation:
apiVersion: batch/v1
kind: CronJob
metadata:
name: api-key-rotator
spec:
schedule: "0 0 * * 0" # Varje söndag
jobTemplate:
spec:
template:
spec:
containers:
- name: rotator
image: smartmoney-key-rotator:latest
Multi-Faktor-autentisering (MFA)
För konton som har tillgång till produktionsdata ger MFA ett extra säkerhetslager genom att kräva en andra faktor utöver inloggningsuppgifter.
MFA-metoder som stöds
- TOTP (Time-based One-Time Password) — Appar som Google Authenticator, Authy
- WebAuthn/FIDO2 — Hårdvarusäkerhetsnycklar, biometri
- SMS engångskoder — Mindre säkert men allmänt stött
- E-postbekräftelse — Bekräftelsekoder skickade till registrerad e-post
Aktivera TOTP för kontotillgång
// Steg 1: Begär MFA-inställning
curl -X POST "https://api.smartmoneyapi.com/v1/account/mfa/enable" \
-H "Authorization: Bearer token"
// Svar inkluderar QR-kod-URL
{
"qr_code_url": "https://...",
"secret": "JBSWY3DPEBLW64TMMQ...",
"backup_codes": ["12345678", ...]
}
MFA under API-operationer
Vissa operationer kan kräva MFA-bekräftelse även efter autentisering:
// Försöker utföra känslig operation (nyckelrotation)
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Token: mfa_challenge_abc123"
// Svar: MFA krävs
{
"error": "mfa_required",
"mfa_token": "mfa_xyz789"
}
// Försök igen med TOTP-kod
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Code: 123456"
Säkerhetsbästa praxis
Autentisering är bara så stark som dess implementering. Följ dessa metoder för att upprätthålla säkerhet:
Hantering av hemligheter
- Lägg aldrig hemligheter i versionskontroll — Använd .env-filer med .gitignore
- Använd miljövariabler — Ladda från säkra hemlighetshanteringssystem
- Skanna databaser — Använd verktyg som TruffleHog, detect-secrets för att hitta exponerade nycklar
- Granska åtkomstloggar — Övervaka vem som har tillgång till hemligheter och när
Transportsäkerhet
- Använd alltid HTTPS — Skicka aldrig inloggningsuppgifter över okrypterade anslutningar
- Verifiera SSL-certifikat — Inaktivera inte certifikatvalidering i produktion
- Använd certifikatpinning — För mobilappar, förhindra MITM-attacker
- Tvinga TLS 1.2+ — Inaktivera äldre protokoll
Hantering av inloggningsuppgifter
- Hasha hemligheter — Lagra bcrypt eller Argon2-hashar, aldrig i klartext
- Minimera livstid — Behåll inloggningsuppgifter i minnet endast så länge som nödvändigt
- Rensa känsliga data — Skriv över inloggningsuppgifter explicit efter användning
- Använd säkra bibliotek — Implementera inte kryptografi själv
Loggning och övervakning
- Logga aldrig inloggningsuppgifter — Redigera nycklar i loggar, använd loggmaskning
- Logga autentiseringshändelser — Spåra lyckade och misslyckade inloggningsförsök
- Övervaka för avvikelser — Varna för ovanliga åtkomstmönster
- Granska nyckelanvändning — Spåra vilka nycklar som har tillgång till vilka data
Företagsautentiseringsmönster
Stora organisationer kräver ofta ytterligare säkerhetskontroller och efterlevnadsmöjligheter.
SAML 2.0-integration
För företagskunder stöder Smart Money API SAML 2.0-integration med din organisations identitetsleverantör (Okta, Azure AD, etc.):
- Enkel inloggning (SSO) — Användare autentiseras genom företagets IdP
- Automatisk etablering — Skapa/inaktivera konton baserat på gruppmedlemskap
- Tvingande — Kräv SAML för all användaråtkomst
IP-vitlistning
Begränsa API-åtkomst till specifika IP-adresser eller CIDR-intervall:
// Lägg till IP i whitelist
curl -X POST "https://api.smartmoneyapi.com/v1/account/ip-whitelist" \
-H "Authorization: Bearer token" \
-d '{
"cidr": "203.0.113.0/24",
"description": "Produktionsservrar"
}'
Granskningsloggning och efterlevnad
Enterprise-planer inkluderar omfattande granskningsloggar för efterlevnad:
| Händelse |
Loggad data |
| Autentisering |
Användare, tidsstämpel, lyckat/misslyckat, IP, MFA-status |
| Nyckeloperationer |
Nyckel-ID, åtgärd, initierare, tidsstämpel |
| Kontoändringar |
Vad som ändrades, vem som ändrade det, tidsstämpel, före/efter-värden |
| Dataåtkomst |
Användare, slutpunkt, scope, tidsstämpel, antal poster |
Felsökning av autentiseringsproblem
Ogiltigt API-nyckelfel
Problem: Får "401 Unauthorized - Invalid API Key"
Lösningar:
- Verifiera nyckelformat (ska börja med sk_test_ eller sk_live_)
- Kontrollera efter inledande/avslutande blanktecken i nyckeln
- Bekräfta att nyckeln inte har inaktiverats eller roterats
- Verifiera att du använder rätt miljö (testnyckel för test, live för produktion)
- Kontrollera att API-nyckelns behörigheter matchar slutpunktens krav
Token har upphört att gälla
Problem: Bearer-token har upphört att gälla, förfrågningar misslyckas
Lösningar:
- Använd refresh-token för att få en ny access-token
- Implementera automatisk token-uppdatering 5 minuter före utgång
- Förvara refresh-token säkert (inte i localStorage för SPAs)
- Hantera 401-svar genom att försöka med refresh-token-flöde
CORS/Preflight-fel
Problem: Webbläsaren blockerar förfrågningar med CORS-fel
Lösningar:
- API-anrop från webbläsare måste komma från whitelistade ursprung
- Lägg till din domän via instrumentpanelen: Inställningar → CORS Origins
- Webbläsaren skickar automatiskt en OPTIONS preflight-förfrågan
- För utveckling, använd localhost:3000 eller liknande
MFA-utmaning slutförs inte
Problem: Operationer som kräver MFA misslyckas trots korrekt kod
Lösningar:
- Se till att serverklockan är synkroniserad (TOTP förlitar sig på tid)
- Koden är endast giltig i 30 sekunder, generera en ny
- Använd reservkoder om autentiseringsappen inte är tillgänglig
- Kontoåterställning tillgänglig via registrerad e-post
Implementera säker autentisering idag
Smart Money API stöder företagsgrad av autentisering med OAuth 2.0, JWT, MFA och SAML-integration. Säkerställ din API-integration med branschens bästa praxis.
Visa Enterprise-planer
Behöver du SAML, IP-whitelisting eller dedikerad support? Kontakta vår försäljningsavdelning.