Sichern Sie Ihre API-Aufrufe mit Bearer-Token-Authentifizierung
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.
Folgen Sie diesen Schritten, um AppHighway-APIs mit Authentifizierung zu nutzen:
Erstellen Sie ein AppHighway-Konto oder melden Sie sich über das Dashboard bei Ihrem bestehenden Konto an.
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').
Fügen Sie Ihr API-Token im Authorization-Header jeder API-Anfrage als Bearer-Token ein.
Schritt-für-Schritt-Anleitung zum Erstellen und Verwalten Ihrer API-Tokens
Verwenden Sie klare, aussagekräftige Namen zur Identifizierung von Zweck und Umgebung jedes Tokens:
Kontrollieren Sie, auf welche APIs Ihr Token zugreifen kann:
Fügen Sie Ihr API-Token im Authorization-Header mit dem Bearer-Schema ein:
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"
}
}'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);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)Produktionsreife Beispiele mit Fehlerbehandlung, Retry-Logik und Best Practices
Ein robuster TypeScript-Client mit Typsicherheit und umfassender Fehlerbehandlung für den Produktionseinsatz
import axios, { AxiosError } from 'axios';
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;
};
}
class AppHighwayClient {
private token: string;
private baseURL: string;
constructor(token: string, baseURL = API_URL) {
this.token = token;
this.baseURL = baseURL;
}
async call<T = unknown>(
endpoint: string,
data: Record<string, unknown>
): Promise<T> {
try {
const response = await axios.post<T>(
`${this.baseURL}/${endpoint}`,
data,
{
headers: {
'Authorization': `Bearer ${this.token}`,
'Content-Type': 'application/json',
},
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
const apiError = error.response?.data 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 (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait before retrying.');
}
}
throw error;
}
}
}
// Usage
const client = new AppHighwayClient(API_TOKEN);
const result = await client.call('structify', {
text: 'John Doe is 35 years old',
schema: { name: 'string', age: 'number' }
});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' }
});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)
}Best Practices für die Verwaltung Ihrer API-Tokens:
Verwenden Sie klare, aussagekräftige Namen für Ihre Tokens, um deren Zweck und Umgebung zu identifizieren. Beispiele:
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.
Wenn ein Token kompromittiert wurde, widerrufen Sie es sofort über Ihr Dashboard, um unbefugten Zugriff zu verhindern.
Häufige authentifizierungsbezogene Fehler und deren Behandlung:
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"
}
}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"
}
}Sie haben das Ratenlimit für Ihr Token überschritten. Warten Sie vor weiteren Anfragen oder erhöhen Sie Ihr Ratenlimit.
Kritische Sicherheitsrichtlinien zum Schutz Ihrer API-Tokens und zur Verhinderung unbefugten Zugriffs
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.
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.
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.
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.
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.
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 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.
Folgen Sie diesen Sicherheits-Best-Practices bei der Nutzung von AppHighway-APIs: