Authentifizierung
Sichern Sie Ihre API-Aufrufe mit Bearer-Token-Authentifizierung
Übersicht
AppHighway verwendet Bearer-Token-Authentifizierung für alle API-Endpunkte. Jeder Benutzer kann mehrere API-Tokens mit individuellen Namen, Berechtigungen und Ratenlimits erstellen.
Multi-Token-Unterstützung
Erstellen Sie mehrere API-Tokens für verschiedene Umgebungen (Produktion, Staging, Entwicklung) oder Anwendungen.
Token-Berechtigungen
Kontrollieren Sie, auf welche APIs jedes Token zugreifen kann. Nützlich zur Begrenzung von Berechtigungen für spezifische Anwendungsfälle.
Ratenlimitierung
Jedes Token hat ein eigenes Ratenlimit (Standard: 60 Anfragen pro Minute). Passen Sie Limits nach Ihren Bedürfnissen an.
Optionale Ablaufzeit
Setzen Sie Ablaufdaten für Tokens, um die Sicherheit zu erhöhen. Tokens ohne Ablaufdatum bleiben unbegrenzt gültig.
Erste Schritte
Folgen Sie diesen Schritten, um AppHighway-Tools mit Authentifizierung zu nutzen:
1. Registrieren oder Anmelden
Erstellen Sie ein AppHighway-Konto oder melden Sie sich über das Dashboard bei Ihrem bestehenden Konto an.
2. API-Token erstellen
Navigieren Sie zur Tokens-Seite in Ihrem Dashboard und erstellen Sie ein neues API-Token. Geben Sie ihm einen aussagekräftigen Namen (z.B. 'Produktionsserver', 'Mobile App').
3. Token verwenden
Fügen Sie Ihr API-Token im Authorization-Header jeder API-Anfrage als Bearer-Token ein.
Sicherheitswarnung
API-Tokens erstellen
Schritt-für-Schritt-Anleitung zum Erstellen und Verwalten Ihrer API-Tokens
Token über Dashboard erstellen
- Navigieren Sie zu Ihrem AppHighway Dashboard
- Klicken Sie auf 'Tokens' in der Seitenleiste
- Klicken Sie auf die Schaltfläche 'Neues Token erstellen'
- Geben Sie einen aussagekräftigen Namen für Ihr Token ein (z.B. 'Produktionsserver', 'Mobile App')
- Wählen Sie die API-Berechtigungen für dieses Token aus
- Setzen Sie das Ratenlimit (Standard: 60 Anfragen pro Minute)
- Optional: Setzen Sie ein Ablaufdatum für erhöhte Sicherheit
- Klicken Sie auf 'Token erstellen' und kopieren Sie das generierte Token sofort an einen sicheren Ort
Wichtig: Speichern Sie Ihr Token jetzt
Best Practices für Token-Benennung
Verwenden Sie klare, aussagekräftige Namen zur Identifizierung von Zweck und Umgebung jedes Tokens:
Token-Berechtigungen
Kontrollieren Sie, auf welche APIs Ihr Token zugreifen kann:
Authentifizierte Anfragen durchführen
Fügen Sie Ihr API-Token im Authorization-Header mit dem Bearer-Schema ein:
Mit cURL
curl -X POST https://apphighway.com/api/v1/structify \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "John Doe is 35 years old and lives in New York",
"schema": {
"name": "string",
"age": "number",
"city": "string"
}
}'Mit Node.js
import fetch from 'node-fetch';
const API_TOKEN = 'your_api_token_here';
const API_URL = 'https://apphighway.com/api/v1';
async function callAPI(endpoint, data) {
const response = await fetch(`${API_URL}/${endpoint}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
if (!response.ok) {
throw new Error(`API call failed: ${response.statusText}`);
}
return response.json();
}
// Example: Use Structify API
const result = await callAPI('structify', {
text: 'John Doe is 35 years old',
schema: { name: 'string', age: 'number' }
});
console.log(result);Mit Python
import requests
API_TOKEN = 'your_api_token_here'
API_URL = 'https://apphighway.com/api/v1'
def call_api(endpoint, data):
headers = {
'Authorization': f'Bearer {API_TOKEN}',
'Content-Type': 'application/json'
}
response = requests.post(
f'{API_URL}/{endpoint}',
headers=headers,
json=data
)
response.raise_for_status()
return response.json()
# Example: Use Structify API
result = call_api('structify', {
'text': 'John Doe is 35 years old',
'schema': {'name': 'string', 'age': 'number'}
})
print(result)Erweiterte Verwendungsbeispiele
Produktionsreife Beispiele mit Fehlerbehandlung, Retry-Logik und Best Practices
TypeScript-Client mit Fehlerbehandlung
Ein robuster TypeScript-Client mit Typsicherheit und umfassender Fehlerbehandlung für den Produktionseinsatz
const API_TOKEN = process.env.APPHIGHWAY_API_TOKEN!;
const API_URL = 'https://apphighway.com/api/v1';
interface APIError {
error: {
code: string;
message: string;
details: string;
};
}
interface APIResponse<T> {
status: string;
data: T;
pointsUsed: number;
remainingPoints: number;
}
async function callAPI<T>(
endpoint: string,
data: Record<string, unknown>
): Promise<APIResponse<T>> {
const response = await fetch(`${API_URL}/${endpoint}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
const result = await response.json();
if (!response.ok) {
const apiError = result as APIError;
if (apiError?.error?.code === 'INSUFFICIENT_POINTS') {
throw new Error('Insufficient points. Please purchase more points.');
}
if (apiError?.error?.code === 'UNAUTHORIZED') {
throw new Error('Invalid API token. Please check your credentials.');
}
if (response.status === 429) {
throw new Error('Rate limit exceeded. Please wait before retrying.');
}
throw new Error(apiError?.error?.message || 'API request failed');
}
return result as APIResponse<T>;
}
// Usage
const result = await callAPI('structify', {
text: 'John Doe is 35 years old',
schema: { name: 'string', age: 'number' }
});
console.log(result.data);
console.log(`Points used: ${result.pointsUsed}`);Implementierung von Retry-Logik
Behandeln Sie vorübergehende Fehler und Ratenlimits mit exponentieller Backoff-Retry-Strategie
import fetch from 'node-fetch';
const API_TOKEN = process.env.APPHIGHWAY_API_TOKEN;
const API_URL = 'https://apphighway.com/api/v1';
async function callAPIWithRetry(
endpoint: string,
data: object,
maxRetries = 3
) {
let lastError;
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await fetch(`${API_URL}/${endpoint}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
// Don't retry on client errors (4xx except 429)
if (response.status >= 400 && response.status < 500 && response.status !== 429) {
const error = await response.json();
throw new Error(`API Error: ${error.error.message}`);
}
// Retry on server errors (5xx) or rate limits (429)
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
return await response.json();
} catch (error) {
lastError = error;
if (attempt < maxRetries - 1) {
// Exponential backoff: 1s, 2s, 4s
const delay = Math.pow(2, attempt) * 1000;
console.log(`Retry attempt ${attempt + 1} after ${delay}ms`);
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
throw lastError;
}
// Usage
const result = await callAPIWithRetry('structify', {
text: 'John Doe is 35 years old',
schema: { name: 'string', age: 'number' }
});Go-Implementierung
Produktionsreifer Go-Client mit ordnungsgemäßer Fehlerbehandlung und HTTP-Best-Practices
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
const apiURL = "https://apphighway.com/api/v1"
type APIClient struct {
Token string
HTTPClient *http.Client
}
type APIError struct {
Error struct {
Code string `json:"code"`
Message string `json:"message"`
Details string `json:"details"`
} `json:"error"`
}
func NewClient(token string) *APIClient {
return &APIClient{
Token: token,
HTTPClient: &http.Client{},
}
}
func (c *APIClient) Call(endpoint string, data interface{}) ([]byte, error) {
jsonData, err := json.Marshal(data)
if err != nil {
return nil, fmt.Errorf("failed to marshal data: %w", err)
}
req, err := http.NewRequest(
"POST",
fmt.Sprintf("%s/%s", apiURL, endpoint),
bytes.NewBuffer(jsonData),
)
if err != nil {
return nil, fmt.Errorf("failed to create request: %w", err)
}
req.Header.Set("Authorization", "Bearer "+c.Token)
req.Header.Set("Content-Type", "application/json")
resp, err := c.HTTPClient.Do(req)
if err != nil {
return nil, fmt.Errorf("request failed: %w", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read response: %w", err)
}
if resp.StatusCode != http.StatusOK {
var apiErr APIError
if err := json.Unmarshal(body, &apiErr); err == nil {
return nil, fmt.Errorf("API error: %s", apiErr.Error.Message)
}
return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, string(body))
}
return body, nil
}
func main() {
client := NewClient(os.Getenv("APPHIGHWAY_API_TOKEN"))
data := map[string]interface{}{
"text": "John Doe is 35 years old",
"schema": map[string]string{
"name": "string",
"age": "number",
},
}
result, err := client.Call("structify", data)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Result: %s\n", result)
}Token-Verwaltung
Best Practices für die Verwaltung Ihrer API-Tokens:
Aussagekräftige Namen
Verwenden Sie klare, aussagekräftige Namen für Ihre Tokens, um deren Zweck und Umgebung zu identifizieren. Beispiele:
Token-Rotation
Rotieren Sie Ihre API-Tokens regelmäßig für erhöhte Sicherheit. Erstellen Sie ein neues Token, aktualisieren Sie Ihre Anwendungen und löschen Sie das alte Token.
Sofortiger Widerruf
Wenn ein Token kompromittiert wurde, widerrufen Sie es sofort über Ihr Dashboard, um unbefugten Zugriff zu verhindern.
Fehlerbehandlung
Häufige authentifizierungsbezogene Fehler und deren Behandlung:
Nicht autorisiert
Ihr API-Token ist ungültig, abgelaufen oder fehlt. Überprüfen Sie, ob Sie das korrekte Token im Authorization-Header senden.
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API token",
"details": "The provided token is not valid or has expired"
}
}Zahlung erforderlich (Unzureichende Punkte)
Ihr Konto hat nicht genügend Punkte für diesen API-Aufruf. Kaufen Sie weitere Punkte, um fortzufahren.
{
"error": {
"code": "INSUFFICIENT_POINTS",
"message": "Insufficient points. Required: 3, Available: 1",
"details": "Please purchase more points to continue using the API"
}
}Zu viele Anfragen
Sie haben das Ratenlimit für Ihr Token überschritten. Warten Sie vor weiteren Anfragen oder erhöhen Sie Ihr Ratenlimit.
Token-Sicherheits-Best-Practices
Kritische Sicherheitsrichtlinien zum Schutz Ihrer API-Tokens und zur Verhinderung unbefugten Zugriffs
Sichere Token-Speicherung
Niemals Tokens in Ihrem Code oder der Versionskontrolle offenlegen
Umgebungsvariablen verwenden
Speichern Sie Tokens in Umgebungsvariablen (.env-Dateien) und committen Sie sie niemals in Git. Fügen Sie .env zu Ihrer .gitignore-Datei hinzu.
Secrets-Management-Systeme verwenden
Verwenden Sie für Produktionsumgebungen dedizierte Secrets-Management-Lösungen wie AWS Secrets Manager, HashiCorp Vault oder Azure Key Vault.
Niemals Tokens hartcodieren
Vermeiden Sie es, Tokens direkt in Quellcode, Konfigurationsdateien oder clientseitigen Anwendungen zu hartcodieren.
Niemals in clientseitigem Code offenlegen
API-Tokens sollten nur in serverseitigem Code verwendet werden. Fügen Sie sie niemals in Frontend-JavaScript, Mobile Apps oder anderen clientseitigen Code ein.
Token-Rotation
Rotieren Sie Tokens regelmäßig, um Sicherheitsrisiken zu minimieren
Alle 90 Tage rotieren
Implementieren Sie einen regelmäßigen Rotationsplan (empfohlen alle 90 Tage), um das Expositionsfenster bei Kompromittierung eines Tokens zu begrenzen.
Zero-Downtime-Rotationsprozess
Erstellen Sie ein neues Token, aktualisieren Sie Ihre Anwendungen, um beide Tokens temporär zu verwenden, und entfernen Sie dann das alte Token, sobald alle Systeme migriert sind.
Rotation automatisieren
Verwenden Sie Automatisierungstools und CI/CD-Pipelines, um den Token-Rotationsprozess zu optimieren und manuelle Fehler zu reduzieren.
Zugriffskontrolle & Scoping
Implementieren Sie das Prinzip der minimalen Berechtigung
Minimale Berechtigungen verwenden
Gewähren Sie nur Zugriff auf die spezifischen APIs, die Ihre Anwendung benötigt. Vermeiden Sie Tokens mit Vollzugriff, es sei denn, dies ist absolut notwendig.
Separate Tokens pro Umgebung
Verwenden Sie unterschiedliche Tokens für Produktions-, Staging- und Entwicklungsumgebungen. Verwenden Sie Produktions-Tokens niemals in niedrigeren Umgebungen wieder.
Ein Token pro Anwendung
Erstellen Sie separate Tokens für jede Anwendung oder jeden Service. Dies erleichtert die Nachverfolgung der Nutzung und den Widerruf des Zugriffs bei Bedarf.
Überwachung & Erkennung
Erkennen und reagieren Sie auf verdächtige Aktivitäten
Token-Nutzung überwachen
Überprüfen Sie regelmäßig die Token-Nutzung in Ihrem Dashboard. Achten Sie auf unerwartete Spitzen, ungewöhnliche API-Aufrufe oder Zugriffe von unbekannten Standorten.
Benachrichtigungen einrichten
Konfigurieren Sie Benachrichtigungen für ungewöhnliche Aktivitätsmuster wie Ratenlimit-Verstöße, fehlgeschlagene Authentifizierungsversuche oder API-Aufrufe von unerwarteten IPs.
Umfassendes Logging implementieren
Protokollieren Sie alle API-Anfragen mit Zeitstempeln, aufgerufenen Endpunkten und Antwortcodes. Dies hilft bei Debugging und Sicherheitsaudits.
Incident Response
Handeln Sie schnell, wenn ein Token kompromittiert wurde
Kompromittierte Tokens sofort widerrufen
Wenn Sie vermuten, dass ein Token offengelegt oder kompromittiert wurde, widerrufen Sie es sofort über Ihr Dashboard, um unbefugten Zugriff zu verhindern.
Auswirkungen bewerten
Überprüfen Sie API-Nutzungsprotokolle, um festzustellen, welche Aktionen mit dem kompromittierten Token durchgeführt wurden und bewerten Sie potenzielle Datenoffenlegungen.
Neues Token erstellen
Nach dem Widerruf eines kompromittierten Tokens erstellen Sie ein neues Token mit geeigneten Berechtigungen und aktualisieren Sie Ihre Anwendungen.
Punktenutzung überprüfen
Überprüfen Sie Ihren Punktestand und Ihre Nutzungshistorie. Unbefugte API-Aufrufe könnten Punkte verbraucht haben. Kontaktieren Sie den Support bei betrügerischer Nutzung.
Sichere Übertragung
Schützen Sie Tokens während der Übertragung
Immer HTTPS verwenden
Führen Sie API-Aufrufe nur über HTTPS durch, um Tokens während der Übertragung zu verschlüsseln. Senden Sie Tokens niemals über unverschlüsselte HTTP-Verbindungen.
TLS-Zertifikate verifizieren
Stellen Sie sicher, dass Ihr HTTP-Client SSL/TLS-Zertifikate verifiziert, um Man-in-the-Middle-Angriffe zu verhindern.
Tokens nicht protokollieren
Protokollieren Sie niemals vollständige API-Tokens in Anwendungsprotokollen, Fehlermeldungen oder Debug-Ausgaben. Falls Logging notwendig ist, schwärzen oder maskieren Sie den Token-Wert.
Compliance & Governance
Compliance mit Sicherheitsstandards aufrechterhalten
Token-Nutzung dokumentieren
Führen Sie ein Inventar aller aktiven Tokens, deren Zwecke, Eigentümer und Ablaufdaten.
Regelmäßige Zugriffsüberprüfungen
Überprüfen Sie regelmäßig alle aktiven Tokens und widerrufen Sie diejenigen, die nicht mehr benötigt werden oder ehemaligen Teammitgliedern gehören.
Ablaufdaten festlegen
Setzen Sie für temporäre Anwendungsfälle oder kurzfristige Projekte Token-Ablaufdaten, um deren Lebensdauer automatisch zu begrenzen.
Best Practices
Folgen Sie diesen Sicherheits-Best-Practices bei der Nutzung von AppHighway-Tools:
- Speichern Sie API-Tokens in Umgebungsvariablen, niemals direkt im Quellcode
- Verwenden Sie verschiedene Tokens für verschiedene Umgebungen (Produktion, Staging, Entwicklung)
- Setzen Sie geeignete Berechtigungen, um Token-Zugriffe nur auf benötigte APIs zu beschränken
- Implementieren Sie Token-Rotation alle 90 Tage für erhöhte Sicherheit
- Überwachen Sie die Token-Nutzung in Ihrem Dashboard, um verdächtige Aktivitäten zu erkennen
- Setzen Sie Ablaufdaten für Tokens, die nur temporär benötigt werden