2017-10-08 2 views
0

Ich habe benutzerdefinierte Berechtigung im API-Gateway für eine Proxy-Ressource konfiguriert, aber meine Anforderung besteht darin, einige APIs von der Berechtigung zu befreien, aber ich möchte keine neue API im API-Gateway konfigurieren, weil ich versuche, einen Proxy über API zu entwerfen Tor.Wie kann eine bestimmte Ressource von der benutzerdefinierten Autorisierung in AWS API Gateway ausgenommen werden?

Zum Beispiel die API /server/ver1.0/rest/{proxy+}, das ist meine REST-API, die im API-Gateway konfiguriert ist und die benutzerdefinierte Autorisierung durchläuft. Wenn sie erfolgreich ist, ruft sie den Back-End-HTTP-Dienst auf.

Aber ich möchte die API - /server/ver1.0/rest/acc/reg von der Zulassung befreien.

Antwort

1

Angenommen, der benutzerdefinierte Autorisierung ist eine Lambda-Funktion, was bedeutet, dass Ihr API-Gateway eine Proxy-Integration mit Lambda ist - Sie könnten es in der Lambda-Funktion tun.

Abhängig von der Ressource, die Sie anfordern, zB: /acc/reg - Sie können dies in der Lambda-Funktion erkennen und die Authentifizierung umgehen. Für alle anderen Ressourcen können Sie den benutzerdefinierten Autorisierungsprozess durchlaufen.

Sie können Variablen definieren Sie Ihre sichere vs unsicheren Ressourcen zu speichern, entsprechen denen, gegen den Antrag

var insecureApis = '/hello,/acc/reg'; 
var secureApis = '/account/me'; 

var path = event.path; 

if(secureApis.includes(path)){ 
    //perform custom auth and proxy request 
} else { 
    // just proxy 
} 
+0

Dank mailtobash habe ich ein separates verwenden zur Zeit verschmutzen API in API-Gateway und deaktiviert den Autorisierer in der Methode Anfragekonfiguration, aber die ideale Lösung wäre, den benutzerdefinierten Autorizer zur Laufzeit für bestimmte Url zu deaktivieren, aber es scheint, dass der AWS-API-Gateway es ab sofort nicht unterstützt. –

1

Schließlich habe ich das Problem auf die gleiche Weise gelöst habe ich in meiner Frage beschrieben,

Da es keine Möglichkeit ist, die AWS jede programmatische Art und Weise gibt eine bestimmte Bedingung zu verzichten, sind wir mit folgenden Optionen links:

  1. eine separate API erstellen - auf diese Weise AWS würde eine Präferenz auf spezifischere API als Standardversion, dh API /server/ver1.0/rest/acc/reg eine Präferenz gegeben würde /server/ver1.0/rest/{proxy+} 2)

  2. Ändern benutzerdefinierte authorizer Lambda Funktion jeder einzelnen URL-Muster zu überprüfen, aber das macht Lambda benutzerdefinierte Auth sehr komplex und weniger wartbar.

ich die erste Option als mehr sauberen und leichter warten, angenommen habe, außerdem wollte ich nicht mein Lambda benutzerdefinierte authorizer mit verschiedenem URL-Muster

Verwandte Themen