2017-09-21 8 views
5

Próbuję użyć autoryzatora bramy aws api z pulą użytkowników cognito. Działa dobrze, gdy testuję za pomocą konsoli bramy aws api.AWS Api Gateway Authorizer + Pula użytkowników Cognito nie działa {"wiadomość": "Nieautoryzowane"}

ale gdy próbuję umożliwiające autoryzację w API mówi "message": "Unauthorized". Proszę sprawdzić poniżej zrzucie

API Screenshot Brama Console - to dobrze enter image description here

Postman Zrzut ekranu - nie działa enter image description here

Czy ktoś może pomóc?

FYI Śledzę z instrukcjami, jak wspomniano tutaj http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

+0

Czy to po prostu 'username', a nie' cognito: username'? Nie stosowałem tej dokładnej metody, ale nie jestem pewien, czy ta część jest właściwa. –

+1

cognito: nazwa użytkownika to odpowiedź, którą otrzymuję w celu uzyskania pomyślnej autoryzacji. Nawet ja dostaję tego samego rodzaju problem dla niestandardowej autoryzacji również. Na pewno robię coś głupiego, ale nie mogę tego rozgryźć. Jeśli ktoś może pomóc, to byłoby wspaniale. –

+0

Przepraszam, pomyliłem to z twoim kodem. Listonosz mówi, że w odpowiedzi jest 12 nagłówków. Czy możesz je opublikować? –

Odpowiedz

1

miałem ten sam problem jak ty i sobie sprawę, że wszedłem do złego Reklamowe źródło.

Wprowadź w <your API> -> Authorizers -> Token Source nazwę nagłówka HTTP, w którym bramka API musi wyszukać token. (w twoim przypadku Authorization)

Zapisz go i nie zapomnij go wdrożyć przed testowaniem.

enter image description here

+0

FYI mam przyznanie pozwolenia jako źródło tokena, a także wdrożyło interfejs API, wciąż napotykając na ten sam problem. –

2

Próbowałem rozwiązanie Mathias' out i to nie działa na początku. Dziwnie, mogę wrócić do niego kilka godzin później i spróbowałem jeszcze raz, i tym razem wprowadziłem kilka innych zmian do mojej bramki API przed wdrożeniem API. Tym razem zadziałało, mimo że inne zmiany, które zrobiłem, były powierzchowne.

Ponadto, jak to często bywa, dokumenty AWS są błędne, stwierdzając, że należy użyć method.response.header.Authorization. Jest to naprawdę ważne tylko w przypadku Lambdas przy użyciu niestandardowego auth. Powinieneś używać tylko Authorization tutaj, kiedy używasz nowego autoryzatora puli użytkownika Cognito.

  1. Zastosowanie Authorization nie method.response.header.Authorization
  2. Zrób powierzchowne zmiany zasobu w API Brama
  3. wdrożyć swoje API i czekać drugi

- Edit -

byłem po prostu przekształcenie mojego stosu w Cloudformation i okazało się, że jeśli używasz Cloudformation do wdrożenia Authorizer, w rzeczywistości musisz podać pełną method.response.header.Authorization dla źródła tokena. W rzeczywistości wdrożenie stosu nie powiedzie się, jeśli nie użyjesz tego formatu. Jednak po wdrożeniu, jeśli spojrzysz na Authorizer w konsoli, to spadnie część method.response.header.

Powiązane problemy