תיעוד API
תבניות אימות מתקדמות — OAuth 2.0, JWT, רוטציית מפתחות
שלוט במנגנוני אימות מתוחכמים לשילוב Smart Money API בסביבות ארגוניות. למד זרימות OAuth 2.0, תבניות אסימוני JWT, רוטציית מפתחות מאובטחת ויישום אימות רב-שלבי.
פורסם ב-21 במרץ 2026
•
18 דקות קריאה
•
מתקדם
סקירת אימות
Smart Money API תומך במספר שיטות אימות המותאמות לארכיטקטורות יישומים שונות, דרישות אבטחה ומדיניות ארגונית. הבנת תבניות אלו מבטיחה שהאינטגרציה שלך תהיה מאובטחת וביצועית.
אימות ב-Smart Money API פועל בשלוש שכבות עיקריות:
- מפתחות API — אימות אסימון Bearer פשוט לפיתוח ואינטגרציות ישירות
- אסימוני JWT — אסימונים חסרי מצב, חתומים קריפטוגרפית למערכות מבוזרות ומיקרו-שירותים
- OAuth 2.0 — מסגרת הרשאה מואצלת לאינטגרציות צד שלישי ויישומי SaaS
עקרון אבטחה: לעולם אל תחשף פרטי אימות בקוד צד לקוח, יומנים, בקרת גרסאות או הודעות שגיאה. יישם רוטציית פרטי אימות על פי לוח זמנים ומיידית במקרה של פגיעה.
לכל שיטה יש יתרונות ייחודיים. מפתחות API עובדים הכי טוב לתקשורת בין שרתים כאשר אחסון הפרטים נמצא בשליטה. אסימוני JWT מצטיינים בארכיטקטורות מבוזרות שבהן אין מצב משותף. OAuth 2.0 מספק גישה מואצלת למשתמשים עבור יישומי צד שלישי.
אימות באמצעות מפתח API
מפתחות API הם מנגנון האימות הפשוט ביותר — הם מחרוזות אקראיות שנוצרו עבור החשבון שלך שמזהה את היישום שלך ב-Smart Money API. כל בקשה חייבת לכלול את מפתח ה-API שלך ככותרת או פרמטר שאילתה.
מפתח API מבוסס כותרת
הגישה המומלצת היא להעביר את מפתח ה-API בכותרת Authorization באמצעות סכמת Bearer:
curl -X GET "https://api.smartmoneyapi.com/v1/whales/btc" \
-H "Authorization: Bearer sk_live_1234567890abcdef" \
-H "Accept: application/json"
מפתח API כפרמטר שאילתה
לחיבורי WebSocket או כאשר לא ניתן לשנות כותרות, העבר את מפתח ה-API כפרמטר שאילתה:
ws://localhost:8877/ws?api_key=sk_live_1234567890abcdef
// מקים זרם WebSocket מאומת
מאפיינים של מפתח API
| מאפיין |
תיאור |
| פורמט |
מחרוזת hex באורך 128 תווים עם קידומת sk_test_ או sk_live_ |
| היקף |
יורש את כל ההרשאות של החשבון שיצר אותו |
| תפוגה |
לא פג תוקף באופן אוטומטי; חייב להיות מוחלף ידנית |
| רוטציה |
צור מפתח חדש, העבר תעבורה, ולאחר מכן השבת את המפתח הישן |
| מגבלות קצב |
משותף לכל הבקשות המשתמשות באותו מפתח |
שיטות עבודה מומלצות לאבטחת מפתח API
- משתני סביבה — אחסן מפתחות בקובצי .env (לא מועברים לבקרת גרסאות) וטען בזמן ריצה
- מערכות כספות — השתמשו ב-HashiCorp Vault, AWS Secrets Manager, או Azure Key Vault בסביבת production
- מפתחות נפרדים — שמרו על מפתחות נפרדים לסביבת test ו-production; החליפו מפתחות test בתדירות גבוהה
- היקף מינימלי — צרו מפתחות נפרדים לאינטגרציות שונות כאשר אפשרי
- רישום ביקורת — רשמו את כל אירועי יצירת ושימוש במפתחות API
קבלו את מפתח ה-API שלכם תוך 30 שניות
מוכנים לבנות? קבלו מפתח API בחינם (100 קריאות/יום, ללא כרטיס) והתחילו למשוך נתוני ליווייתנים, מימון ושרשרת בזמן אמת.
קבלו את מפתח ה-API שלכם →
דפוס אסימון Bearer
אסימוני Bearer מרחיבים את רעיון מפתח ה-API הפשוט על ידי הוספת הקשר, תפוגה ומנגנוני רענון. הם אידיאליים ליישומים הזקוקים לניהול אישורים תכנותי.
קבלת אסימוני Bearer
החליפו את מפתח ה-API והסוד שלכם באסימון bearer תקף ל-24 שעות:
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"
}'
פורמט תגובת אסימון
הנקודה הסופית מחזירה אסימון bearer עם מטא-נתונים:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "refresh_1234567..."
}
שימוש באסימוני Bearer
כללו את האסימון בכותרת Authorization לכל הבקשות הבאות:
curl -X GET "https://api.smartmoneyapi.com/v1/derivatives/funding-heatmap" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
זרימת רענון אסימון
כאשר אסימון מתקרב לתפוגה, השתמשו באסימון הרענון כדי לקבל אחד חדש ללא צורך בסוד ה-API שלכם:
curl -X POST "https://api.smartmoneyapi.com/v1/auth/refresh" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "refresh_1234567..."
}'
יישום OAuth 2.0
OAuth 2.0 מאפשר למשתמשים להעניק ליישומים גישה לחשבונות Smart Money API שלהם מבלי לשתף אישורים. זה חיוני עבור פלטפורמות SaaS, אינטגרציות צד שלישי ויישומים מרובי דיירים.
זרימת קוד הרשאה של OAuth 2.0
הזרימה הסטנדרטית עבור יישומי אינטרנט:
- משתמש מתחיל התחברות — המשתמש לוחץ על "התחבר עם Smart Money API"
- הפניה לשרת הרשאה — היישום שלכם מפנה את המשתמש לנקודת הסיום של ההרשאה של Smart Money
- משתמש מעניק הרשאה — המשתמש סוקר את היקפי הגישה המבוקשים ומעניק גישה
- קוד הרשאה מוחזר — המשתמש מופנה בחזרה עם קוד הרשאה
- החלפת קוד באסימון — השרת האחורי מחליף את הקוד באסימון גישה (הקוד לעולם לא נחשף לחזית)
- אחסון אסימון — אחסן את טוקן הרענון בצורה מאובטחת; השתמש בטוקן הגישה לביצוע קריאות API
שלב 1: הפנה את המשתמש לנקודת הסמכה
// כתובת URL להפניה של המשתמש
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();
שלב 2: טפל בקריאה החוזרת והחלף את הקוד
// השרת מטפל בנתיב /callback
const code = req.query.code;
const storedState = req.session.state;
const receivedState = req.query.state;
// ודא את פרמטר ה-state
if (storedState !== receivedState) {
throw new Error('State mismatch - CSRF attack detected');
}
// החלף את הקוד לטוקן
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();
// אחסן את הטוקנים בצורה מאובטחת
היקפי OAuth
בקש רק את ההיקפים שהאפליקציה שלך צריכה. Smart Money API מגדיר את ההיקפים הבאים:
| היקף |
תיאור |
| whales |
גישה למעקב אחר ארנקים של לווייתנים ומדדי הצטברות |
| derivatives |
גישה לנתוני חוזים עתידיים, חוזים תמידיים ושיעורי מימון |
| onchain |
גישה לזרמי עסקאות וניתוחים על שרשרת |
| alerts |
צור ונהל התראות דרך webhook |
| offline |
גישה לטוקני רענון לקבלת טוקני גישה ללא חיבור לרשת |
ניהול טוקני JWT
JWT (JSON Web Tokens) מספקים אימות ללא מצב—השרת לא צריך לאחסן נתוני סשן. Smart Money API משתמש ב-RS256 (חתימת RSA עם SHA-256) לחתימת טוקנים, ומאפשר אימות ללא צורך ליצור קשר עם ה-API.
מבנה JWT
טוקני JWT מורכבים משלושה חלקים המופרדים בנקודות:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFjY3QxMjM0In0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
// HEADER.PAYLOAD.SIGNATURE
כותרת JWT
הכותרת מזהה את האלגוריתם וסוג הטוקן:
{
"alg": "RS256",
"typ": "JWT",
"kid": "1"
}
טענות ה-Payload של JWT
ה-payload מכיל טענות (הצהרות על המשתמש/אפליקציה):
{
"sub": "acct_1234567890",
"name": "Trading Bot",
"iat": 1703001600,
"exp": 1703088000,
"scopes": ["whales", "derivatives"],
"aud": "https://api.smartmoneyapi.com"
}
אימות חתימות JWT
הורד את המפתח הציבורי של Smart Money ואימות את הטוקנים לפני קבלתם:
const jwt = require('jsonwebtoken');
const fs = require('fs');
// קבל את המפתח הציבורי מ-Smart Money API
const publicKey = fs.readFileSync('smartmoney-public.pem');
// אימות את הטוקן
try {
const decoded = jwt.verify(token, publicKey, {
algorithms: ['RS256'],
audience: 'https://api.smartmoneyapi.com',
issuer: 'https://api.smartmoneyapi.com'
});
// הטוקן תקף, השתמש בטענות המפוענחות
} catch (err) {
// הטוקן לא תקף או שפג תוקפו
}
אסטרטגיית סיבוב מפתחות
סיבוב מפתחות באופן קבוע הוא קריטי לשמירה על אבטחה. גם עם פרקטיקות אבטחה מושלמות, הנח שמפתחות יכולים להיפגע ויישם סיבוב שיטתי.
תדירות סיבוב
Smart Money ממליץ על לוחות זמנים שונים לסיבוב בהתאם לסוג המפתח והשימוש:
| סוג מפתח |
סיבוב מומלץ |
סיבוב מינימלי |
| מפתחות API לבדיקה |
חודשי |
רבעוני |
| מפתחות API לייצור |
רבעוני |
שנתי |
| טוקני רענון OAuth |
אוטומטי (לאחר 90 יום) |
ידני (לאחר 180 יום) |
| מפתחות חשבון שירות |
חצי שנתי |
שנתי |
תהליך סיבוב ללא זמן השבתה
סובב מפתחות ללא הפרעה לשירות:
- צור מפתח חדש — צור מפתח API חדש דרך לוח הבקרה או ה-API
- פרוס מפתח חדש — עדכן את הסודות באפליקציה בסביבת סטייג'ינג, בדוק היטב
- הטלה הדרגתית — פרוס ל-10% מהשרתים, עקוב אחר שגיאות
- הטמעה מלאה — פריסה לשרתים הנותרים
- אימות תעבורה — וידוא שכל הבקשות משתמשות במפתח החדש
- השבתת מפתח ישן — סימון המפתח הישן כלא פעיל אך ללא מחיקה מיידית
- מחיקת מפתח ישן — לאחר 48 שעות ללא שגיאות, מחיקה לצמיתות
החלפת מפתח חירום
אם אתה חושד שהמפתח נפרץ:
// פעולה מיידית: השבתת המפתח שנפרץ
curl -X POST "https://api.smartmoneyapi.com/v1/keys/sk_live_xxx/revoke" \
-H "Authorization: Bearer token"
// יצירת מפתח חלופי מיידית
curl -X POST "https://api.smartmoneyapi.com/v1/keys" \
-H "Content-Type: application/json" \
-d '{
"name": "מפתח חלופי לחירום"
}'
החלפה אוטומטית ב-Kubernetes
השתמשו ב-Secrets וב-operators של Kubernetes להחלפה אוטומטית:
apiVersion: batch/v1
kind: CronJob
metadata:
name: api-key-rotator
spec:
schedule: "0 0 * * 0" # שבועי ביום ראשון
jobTemplate:
spec:
template:
spec:
containers:
- name: rotator
image: smartmoney-key-rotator:latest
אימות רב-גורמי (MFA)
לחשבונות עם גישה לנתוני ייצור, MFA מספק שכבת אבטחה נוספת על ידי דרישת גורם שני מעבר לפרטי ההתחברות.
שיטות MFA נתמכות
- TOTP (סיסמה חד-פעמית מבוססת זמן) — אפליקציות כמו Google Authenticator, Authy
- WebAuthn/FIDO2 — מפתחות אבטחה חומרתיים, ביומטריה
- קודים חד-פעמיים ב-SMS — פחות מאובטח אך נתמך באופן אוניברסלי
- אימות אימייל — קודי אימות נשלחים לכתובת האימייל הרשומה
הפעלת TOTP לגישת חשבון
// שלב 1: בקשת הגדרת MFA
curl -X POST "https://api.smartmoneyapi.com/v1/account/mfa/enable" \
-H "Authorization: Bearer token"
// התגובה כוללת כתובת URL של קוד QR
{
"qr_code_url": "https://...",
"secret": "JBSWY3DPEBLW64TMMQ...",
"backup_codes": ["12345678", ...]
}
MFA במהלך פעולות API
חלק מהפעולות עשויות לדרוש אימות MFA גם לאחר ההתחברות:
// ניסיון לבצע פעולה רגישה (החלפת מפתח)
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Token: mfa_challenge_abc123"
// תגובה: נדרש MFA
{
"error": "mfa_required",
"mfa_token": "mfa_xyz789"
}
// ניסיון חוזר עם קוד TOTP
curl -X POST "https://api.smartmoneyapi.com/v1/keys/rotate" \
-H "Authorization: Bearer token" \
-H "X-MFA-Code: 123456"
שיטות עבודה מומלצות לאבטחה
אימות חזק רק כמו היישום שלו. עקבו אחר השיטות הבאות כדי לשמור על אבטחה:
ניהול סודות
- לעולם אל תכניסו סודות למערכת ניהול גרסאות — השתמשו בקובצי .env עם .gitignore
- השתמשו במשתני סביבה — טעינו ממערכות ניהול סודות מאובטחות
- סריקת מאגרים — השתמשו בכלים כמו TruffleHog, detect-secrets כדי למצוא מפתחות חשופים
- ביקורת יומני גישה — צפו במי שהשתמש בסודות ומתי
אבטחת תעבורה
- תמיד השתמשו ב-HTTPS — לעולם אל תשלחו פרטי התחברות דרך חיבורים לא מוצפנים
- אמתו תעודות SSL — אל תבטלו את אימות התעודות בסביבת ייצור
- השתמשו ב-certificate pinning — עבור אפליקציות מובייל, מנעו התקפות MITM
- החילו TLS 1.2+ — השביתו פרוטוקולים ישנים יותר
טיפול בפרטי התחברות
- הצפנת סודות — אחסנו גיבובים של bcrypt או Argon2, לעולם לא טקסט רגיל
- צמצמו את זמן החיים — שמרו פרטי התחברות בזיכרון רק לזמן הנדרש
- נקו נתונים רגישים — כתבו מעל פרטי התחברות לאחר השימוש
- השתמשו בספריות מאובטחות — אל תממשו קריפטוגרפיה בעצמכם
רישום וניטור
- לעולם אל תרשמו פרטי התחברות — השחיתו מפתחות ביומנים, השתמשו בהסוואת יומנים
- רשמו אירועי אימות — עקבו אחר ניסיונות התחברות מוצלחים וכושלים
- ניטור חריגות — התראות על דפוסי גישה חריגים
- ביקורת שימוש במפתחות — עקבו אחר אילו מפתחות גישנו לאילו נתונים
דפוסי אימות ארגוניים
ארגונים גדולים דורשים לעתים קרובות אמצעי אבטחה נוספים ויכולות תאימות.
אינטגרציית SAML 2.0
עבור לקוחות ארגוניים, Smart Money API תומך באינטגרציית SAML 2.0 עם ספק הזהות של הארגון שלך (Okta, Azure AD וכו'):
- כניסה יחידה (SSO) — משתמשים נכנסים דרך IdP ארגוני
- אספקה אוטומטית — יצירה/השבתה של חשבונות לפי חברות בקבוצה
- אכיפה — דרישת SAML לכל גישת משתמש
רשימת IPs מורשים
הגבלת גישת API לכתובות IP או טווחי CIDR ספציפיים:
// הוספת IP לרשימת המורשים
curl -X POST "https://api.smartmoneyapi.com/v1/account/ip-whitelist" \
-H "Authorization: Bearer token" \
-d '{
"cidr": "203.0.113.0/24",
"description": "שרתי Production"
}'
רישום אירועים ותאימות
תוכניות Enterprise כוללות יומני אירועים מקיפים לצורכי תאימות:
| אירוע |
נתונים שנרשמו |
| אימות |
משתמש, חותמת זמן, הצלחה/כישלון, IP, סטטוס MFA |
| פעולות מפתח |
מזהה מפתח, פעולה, יוזם, חותמת זמן |
| שינויים בחשבון |
מה השתנה, מי שינה, חותמת זמן, ערכים לפני/אחרי |
| גישה לנתונים |
משתמש, נקודת קצה, הרשאות, חותמת זמן, כמות רשומות |
פתרון בעיות באימות
שגיאת מפתח API לא חוקי
בעיה: מקבלים "401 Unauthorized - Invalid API Key"
פתרונות:
- וודא את פורמט המפתח (אמור להתחיל ב-sk_test_ או sk_live_)
- בדוק אם יש רווחים מיותרים בתחילת/סוף המפתח
- וודא שהמפתח לא בוטל או הוחלף
- וודא שאתה משתמש בסביבה הנכונה (מפתח test לסביבת test, live ל-production)
- בדוק שהרשאות מפתח API תואמות לדרישות נקודת הקצה
שגיאת טוקן שפג תוקף
בעיה: טוקן Bearer פג תוקף, בקשות נכשלות
פתרונות:
- השתמש בטוקן רענון כדי לקבל טוקן גישה חדש
- הטמע רענון טוקן אוטומטי 5 דקות לפני פקיעת התוקף
- אחסן טוקן רענון בצורה מאובטחת (לא ב-localStorage עבור SPAs)
- טפל בתגובות 401 על ידי ניסיון לבצע זרימת רענון טוקן
שגיאות CORS/Preflight
בעיה: הדפדפן חוסם בקשות עם שגיאת CORS
פתרונות:
- בקשות API מדפדפנים חייבות להגיע מכתובות מקור מורשות
- הוסף את הדומיין שלך דרך לוח הבקרה: Settings → CORS Origins
- הדפדפן שולח בקשת OPTIONS preflight אוטומטית
- לצורכי פיתוח, השתמש ב-localhost:3000 או דומה
אתגר MFA לא מסתיים
בעיה: פעולות הדורשות MFA נכשלות למרות הקוד הנכון
פתרונות:
- וודא שהשעון של השרת מסונכרן (TOTP מסתמך על זמן)
- הקוד תקף רק ל-30 שניות, צור קוד חדש
- השתמש בקודי גיבוי אם אפליקציית האימות לא זמינה
- שחזור חשבון זמין דרך האימייל הרשום
הטמע אימות מאובטח היום
Smart Money API תומך באימות ברמת Enterprise עם OAuth 2.0, JWT, MFA ואינטגרציית SAML. אבטח את אינטגרציית ה-API שלך עם שיטות העבודה המומלצות בתעשייה.
צפה בתוכניות Enterprise
צריך SAML, רשימת IP מורשים או תמיכה ייעודית? צור קשר עם צוות המכירות שלנו.