Sicherheit
Standardmäßig sind alle Endpunkte einer VCR-Anwendung öffentlich zugänglich. Die security Block in vcr.yml können Sie den Zugriff pro Pfad mit drei Zugriffsebenen und optionaler Authentifizierungsdurchsetzung steuern.
Es wird dringend empfohlen, Sicherheitsregeln für alle Endpunkte in Ihrer Anwendung zu konfigurieren. Wenn Sie die Endpunkte ungeschützt lassen, ist Ihre Anwendung unberechtigtem Zugriff, Missbrauch und unerwarteten Kosten ausgesetzt. Legen Sie zumindest eine restriktive Standardzugriffsstufe fest und öffnen Sie explizit nur die Pfade, die öffentlich sein müssen (z. B. Vonage Webhook-Callbacks).
Zugangsebenen
| Ebene | Beschreibung |
|---|---|
public | Keine Authentifizierung erforderlich. Jeder kann den Endpunkt erreichen. |
private | Von außerhalb der Plattform nicht zugänglich. Nur interne VCR-Dienste können ihn aufrufen. |
authenticated | Erfordert gültige Vonage-API-Anmeldeinformationen in der Datei Authorization Header (HTTP Basic: base64(api_key:api_secret)). Die Plattform validiert die Anmeldedaten, bevor sie die Anfrage an Ihre Anwendung weiterleitet. |
Konfiguration
instance:
security:
access: private
override:
- path: "/webhooks/*"
access: public
- path: "/api/**"
access: authenticated
auth-method: vonage_basic
accesssetzt die Standard Zugriffsstufe für alle Pfade, die nicht mit einer Überschreibung übereinstimmen.overrideist eine Liste von pfadspezifischen Regeln. Die Regeln werden der Reihe nach ausgewertet; die spezifischste Übereinstimmung gewinnt.auth-methodist erforderlich, wennaccessistauthenticated. Der einzige unterstützte Wert istvonage_basic.
Pfad-Wildcards
| Platzhalter | Streichhölzer | Beispiel |
|---|---|---|
* | Ein einzelnes Pfadsegment | /users/*/profile passt zu /users/123/profile aber nicht /users/123/settings/profile |
** | Beliebige Anzahl von Pfadsegmenten | /api/** passt zu /api/v1, /api/v1/users, /api/v1/users/123, usw. |
Webhook-Endpunkte erfordern uneingeschränkten Zugriff
Rückrufe der Vonage-Plattform (eingehende Anrufe, eingehende Nachrichten, Zustellungsquittungen usw.) stammen von außerhalb Ihrer Instanz. Diese Endpunkte müssen festgelegt werden auf publicAndernfalls kann die Vonage-Plattform sie nicht erreichen und Ihre Provider erhalten keine Ereignisse.
instance:
security:
access: private
override:
- path: "/onCall"
access: public
- path: "/onMessage"
access: public
- path: "/api/**"
access: authenticated
auth-method: vonage_basic
So funktioniert der authentifizierte Zugang
Wenn eine Anfrage auf ein authenticated Pfad, der Verkehrslotse:
- Überprüft, ob ein
AuthorizationKopfzeile vorhanden ist. Wenn er fehlt, wird401 Unauthorized. - Überprüft die Anmeldedaten anhand des Authentifizierungsdienstes von Vonage und bestätigt, dass der Anrufer demselben Vonage Account angehört wie der Instanzinhaber. Falls ungültig oder nicht übereinstimmend, wird
403 Forbidden. - Wenn die Validierung erfolgreich ist, wird die Anfrage unverändert an Ihre Anwendung weitergeleitet.
Die vonage_basic auth-Methode verwendet die HTTP Basic-Authentifizierung. Der Aufrufer muss seinen Vonage API-Schlüssel und sein API-Geheimnis verschlüsselt als Basic-Authentifizierungsnachweis senden:
Authorization: Basic base64(api_key:api_secret)
Die meisten HTTP-Clients erledigen dies automatisch, wenn Sie einen Benutzernamen und ein Passwort angeben:
// Example: calling an authenticated VCR endpoint from a client
const response = await fetch('https://my-app.use1.runtime.vonage.cloud/api/data', {
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:${API_SECRET}`),
},
});
Ihr Anwendungscode muss die Anmeldedaten nicht selbst validieren - die Plattform erzwingt die Authentifizierung, bevor die Anfrage Ihren Handler erreicht. Wenn Sie den Aufrufer innerhalb Ihres Handlers identifizieren müssen, injiziert die Plattform die verifizierte Account-ID über die x-neru-apiaccountid Kopfzeile:
app.get('/api/data', async (req, res) => {
const accountId = req.headers['x-neru-apiaccountid'];
res.json({ accountId });
});
Auth-Methodenvererbung
Wenn ein override Eingabefelder access: authenticated unterlässt aber auth-methoderbt es die oberste Ebene auth-method Wert. Wenn keiner der beiden Werte gesetzt ist, lehnt die Bereitstellungs-API die Konfiguration ab.
instance:
security:
access: public
auth-method: vonage_basic # inherited by all authenticated overrides
override:
- path: "/admin/**"
access: authenticated # uses vonage_basic from above
- path: "/api/**"
access: authenticated # also uses vonage_basic from above