2017-09-21 19 views
5

Tôi đang cố gắng sử dụng aws api gateway authorizer với cognito user pool. Nó đang làm việc tốt khi tôi kiểm tra bằng cách sử dụng aws api gateway console.AWS Api Gateway Authorizer + Cognito User Pool Không hoạt động {"message": "Unauthorized"}

Nhưng khi tôi cố gắng tạo điều kiện cho việc uỷ quyền trong api nó nói "message": "Unauthorized". Vui lòng kiểm tra dưới đây screenshot

API Gateway điều khiển Ảnh chụp màn hình - Đây hoạt động tốt enter image description here

Postman Screen shot - Không làm việc enter image description here

Ai đó có thể giúp đỡ.

FYI Tôi đã theo các hướng dẫn như đã đề cập ở đây http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

+0

Chỉ là 'tên người dùng' thay vì' cognito: tên người dùng'? Tôi đã không sử dụng phương pháp chính xác đó, nhưng tôi không chắc chắn rằng một phần là đúng. –

+1

cognito: tên người dùng là phản hồi tôi nhận được để ủy quyền thành công. Ngay cả tôi cũng có cùng một loại vấn đề để ủy quyền tùy chỉnh. Để chắc chắn đang làm một cái gì đó ngớ ngẩn nhưng không thể tìm ra. Nếu ai đó có thể giúp điều đó thật tuyệt .. –

+0

Tôi xin lỗi, tôi đã nhầm điều đó với mã của bạn. Postman nói rằng có 12 tiêu đề trong phản hồi. Bạn có thể đăng bài đó không? –

Trả lời

1

tôi đã cùng một vấn đề như bạn và nhận ra rằng tôi bước vào một Token sai Nguồn.

Nhập <your API> -> Authorizers -> Token Source tên của tiêu đề HTTP nơi cổng API phải tìm mã thông báo. (trong trường hợp của bạn Authorization)

Lưu và đừng quên triển khai trước khi bạn thử nghiệm.

enter image description here

+0

FYI Tôi đã cấp quyền mã nguồn và cũng đã triển khai API, vẫn gặp phải vấn đề tương tự. –

2

Tôi đã thử giải pháp Mathias và không hoạt động lúc đầu. Thật kỳ lạ, tôi có thể quay lại vài giờ sau đó và thử lại, và lần này đã thực hiện một số thay đổi khác đối với cổng API của tôi trước khi triển khai API. Lần này nó hoạt động, mặc dù những thay đổi khác mà tôi đã làm là hời hợt.

Ngoài ra, như thường xảy ra, tài liệu AWS sai, cho biết bạn nên sử dụng method.response.header.Authorization. Điều này thực sự chỉ hợp lệ cho Lambdas bằng cách sử dụng auth tùy chỉnh. Bạn thực sự chỉ nên sử dụng Authorization tại đây khi bạn đang sử dụng Trình ủy quyền nhóm người dùng Cognito mới.

  1. Sử dụng Authorization không method.response.header.Authorization
  2. Thực hiện một sự thay đổi trên bề mặt để tài nguyên của bạn trong API Gateway
  3. Triển khai API của bạn và chờ đợi một giây

- chỉnh sửa -

tôi chỉ cần chuyển đổi ngăn xếp của tôi thành Cloudformation và phát hiện ra rằng nếu bạn đang sử dụng Cloudformation để triển khai Trình ủy quyền, bạn thực sự cần phải chỉ định đầy đủ method.response.header.Authorization cho nguồn mã thông báo. Trong thực tế, một triển khai stack sẽ thất bại nếu bạn không sử dụng định dạng đó. Tuy nhiên, khi được triển khai, nếu bạn nhìn vào Authorizer trong giao diện điều khiển, nó sẽ giảm phần method.response.header.

Các vấn đề liên quan