2016-07-22 9 views
0

Ich brauche Hilfe, um einige Zweifel auszuräumen. Ich habe mit Kong und Amazon API Gateway herumgespielt, konnte aber nicht verstehen, wie ich meine benutzerdefinierte ACL mit diesen API Gateways arbeiten lassen kann.Benutzerdefinierte API-Zugriffsrichtlinien und API-Gateways

Lassen Sie mich mit einem Beispiel zu erklären versuchen:

Derzeit:

Ich habe alle API-Endpunkte und Verben abgebildet ACLs, die ich von MySQL DB (für unterschiedliche Benutzergruppe) und Speicher wählen Er überprüft auf dem Redis-Server und bei jedem API-Aufruf die Zugriffsrechte des Benutzers auf redis und erlaubt/erlaubt Endpoints.

Mit API Gateway:

Mit API-Gateway, kann ich einfach den Benutzer validieren und Token auf dem Auth passieren, aber ich konnte nicht einen Weg, um mehr Daten zu passieren Gateway, damit Gateway überprüfen Sie die Authentifizierung finden + ACL-Richtlinie, ohne auf den Authentifizierungsserver zurückzukehren.

Kong hat ACL-Plugin, konnte aber keine richtigen Informationen darüber finden.

Amazon API Gateway verfügt über benutzerdefinierte Autorisierungsoption und Option, um Richtlinie über Lambda-Funktion zu übergeben, aber ich bin nicht sicher, ob Lambda-Funktion meine benutzerdefinierte ACL akzeptieren kann oder nicht.

Hat jemand hier diese Art von Problem konfrontiert?

Antwort

0

Ich sehe nicht, warum Sie dies nicht über eine benutzerdefinierte Autorisierung tun können. Benutzerdefinierte Autorisierer sind nur Lambda-Funktionen, die Sie schreiben, um Anfragen mit jeder beliebigen Methode zu autorisieren. Sie würden also eine Custom Authorizer Lambda-Funktion erstellen, die die Anforderung durch einen Vergleich mit den Daten in Ihrem Redis-Server überprüft.

0

Sie können benutzerdefinierte API-Gateway-Autorisierer verwenden, die für diesen genauen Anwendungsfall entwickelt wurden. Sie würden einfach die benutzerdefinierte Autorisierungsfunktion implementieren, um Ihren MySQL-Datenspeicher abzufragen und eine geeignete IAM-Richtlinie für Ihre API basierend auf dem Benutzer-Token zurückzugeben.

Darüber hinaus stellt das API-Gateway eine Cache-Ebene für Autorisierungsentscheidungen bereit, sodass Sie möglicherweise keine Redis benötigen. Lassen Sie Ihren Autorizer Ihre Datenbank direkt abfragen und setzen Sie eine entsprechende Cache-TTL auf Ihren Autorizer.

Bitte sehen:

Customer Authorizer developer guide

Customer Authorizer examples

Danke, Ryan

Verwandte Themen