2016-07-26 10 views
8

Z API Gateway, utworzyłem custom authorizer dla mojego API przy użyciu funkcji Lambda w pythonie. Bramka interfejsu API przekazuje nadchodzący token uwierzytelniania za pomocą skonfigurowanego nagłówka (method.request.header.Authorization). Jednak potrzebuję również innych nagłówków oryginalnego żądania http wewnątrz mojej funkcji lambda. Jak mam do nich dostęp? Nie widziałem nagłówków na wejściu obiektu event do mojej funkcji lambda.Jak uzyskać dostęp do nagłówków HTTP w niestandardowym autoryzatorze AWS Funkcja lambda

Należy pamiętać, że nie jest to duplikat How to access HTTP headers for request to AWS API Gateway using Lambda?. Pytanie dotyczy niestandardowej funkcji autoryzacji lambda. Nie widzę żadnej opcji konfiguracyjnej do przekazywania przychodzących nagłówków HTTP do autoryzacji funkcji lambda.

Zgodnie z AWS Documentation, brama API wywołuje Custom Authorizer z poniższymi danymi wejściowymi. Bazując na poniższym, zakładam, że moje pytanie nie jest możliwe. Ale chcesz sprawdzić, czy istnieje obejście.

 

{ 
    "type":"TOKEN", 
    "authorizationToken":"", 
    "methodArn":"arn:aws:execute-api:<regionId>:<accountId>:<apiId>/<stage>/<method>/<resourcePath>" 
} 
+0

niemożliwe. Dlaczego potrzebujesz więcej niż jednego nagłówka? Obejście: Samodzielne uwierzytelnianie/autoryzacja w funkcji Lambda swojej integracji. – hellomichibye

Odpowiedz

1

Niestety obecnie nie jest to możliwe, ale planujemy dodać do tego wsparcie wraz z kilkoma ulepszeniami dla niestandardowych autorów. Nie mam w tej chwili ETA.

+0

Jest to najlepszy sposób na bieżące obsługiwanie uwierzytelniania żądań (np. Sprawdzanie podpisu, który wymagałby danych z nagłówków żądań, ciągu zapytań i ładunku, podobnego do AWS V4), a następnie faktyczne wdrożenie własnej weryfikacji w odbiorze Lambda (lub zestaw Lambdas zmapowany do punktów końcowych bramy API)? – Numbat

+2

Potrzebuję tych funkcji dodać do bramy Amazon api, ponieważ w moim przypadku użycia potrzebuję uzyskać dostęp do nagłówka http, aby uzyskać X-API-KEY i zweryfikować go wraz z autoryzatorem tokena. daj nam znać, gdy tylko dodasz te funkcje. –

+2

Wszelkie aktualizacje na ten temat, ponieważ minął rok? –

0

Tuż po tym, ponieważ bardzo chcielibyśmy skorzystać z tej funkcji. Wynikiem zatwierdzenia tylko nagłówka jest to, że możemy autoryzować wszystkie nasze funkcje lambda oparte na tej samej logice, mimo że nie jest to tym, czego chcemy.

Jako obejście, rozmawialiśmy o rozwiązania zawierają więcej danych w nagłówku (co nie jest optymalne)

Inaczej zawsze istnieje możliwość robienia specjalnego zezwolenia w funkcji lambda siebie, ale w tym przypadku , naprawdę nie mamy żadnego pożytku z niestandardowego autoryzatora bramy API.

2

Jest to teraz możliwe przy użyciu upoważniającego typu „żądanie” zamiast Reklamowe

Pełne szczegóły tutaj: http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

Zasadniczo wszystkie nagłówki są przekazywane w obiekcie zdarzenia o dopuszczenie do żądania

tj nagłówki obiekt na imprezy


    "headers": { 
     "X-wibble": "111", 
     "X-wobble": "222", 
     "x-amzn-ssl-client-hello": "*Deleted*", 
     "Via": "1.1 .cloudfront.net (CloudFront)", 
     "CloudFront-Is-Desktop-Viewer": "true", 
     "CloudFront-Is-SmartTV-Viewer": "false", 
     "CloudFront-Forwarded-Proto": "https", 
     "X-Forwarded-For": "*Deleted*", 
     "CloudFront-Viewer-Country": "GB", 
     "Accept": "*/*", 
     "User-Agent": "curl/7.55.1", 
     "X-Amzn-Trace-Id": "Root=*Deleted*", 
     "Host": "*Deleted*.execute-api.eu-west-1.amazonaws.com", 
     "X-Forwarded-Proto": "https", 
     "X-Amz-Cf-Id": "*Deleted*", 
     "CloudFront-Is-Tablet-Viewer": "false", 
     "X-Forwarded-Port": "443", 
     "CloudFront-Is-Mobile-Viewer": "false" 
    }