2017-10-10 70 views
0

我必須使用AWS API網關和Lambda創建自定義授權。AWS API網關自定義授權人給予異常

我遵循了offical doc上的所有步驟。但在網關端Unauthorized

以下是我遵循的步驟。

1)創建lambda函數(根據github上提供的藍圖)。它將以適當的格式返回policyDocument。這已被 測試以下測試數據 - { "type": "TOKEN", "methodArn": "arn:aws:execute-api:us-west-2:xxxxxxxxxx:fgdfgdfg/null/GET/", "authorizationToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiSm9obiBEb2UiLCJhZG1pbiI6dHJ1ZX0.x8R6LPytDMrPuUBY71skyLBUrkme86DhioN3L7LY_-0" }

2)創建一個API。選擇'創建方法' - >獲取 - > Selet集成類型爲'Lambda函數' - >選擇已在上一步中創建的區域和lambda函數名稱 。

3)點擊授權人(左圖上) - >新建授權者 - >鑑於授權人名稱 - >選擇lambda作爲一個類型 - >選擇Lambda函數 - > Lambda執行角色是具有basix執行角色策略的arn - >有效負載爲令牌 - >令牌源爲'method.request.header.Authorization' - >緩存被禁用。

Refer this

4)測試認證器並返回

5)我已經部署試圖與郵差調用網址以 '授權:承載' 的API

6)適當的政策。並且輸出是{ 「消息」:「未授權」 }

任何幫助將不勝感激!謝謝。

+0

由於您使用的是郵遞員,您是否可以在問題中發佈郵遞員代碼(轉到「代碼」,然後選擇HTTP或cURL)? – dashmug

+0

你真的使用'Header:Bearer'作爲你的標題之一還是隻是一個錯字?這就是爲什麼我建議你發佈郵件中的東西。 – dashmug

+0

@dashmug這是錯字。我已經在郵遞員 –

回答

0

那麼,AWS是偉大的。自從一個月以來,我一直在玩API網關。 API網關的文檔確實需要一些更新。我經歷過與API網關合作需要大量的試錯法。看起來,文檔(特別是API網關的自定義授權程序)是通過假設開發人員知道構建API網關的授權程序所需的內容編寫的。

我不知道我是否錯過了一些東西,或者它太複雜,無法理解定製授權者的文檔。經過調查(相當長的時間)後,我發現它的確切工作。我會試着在下面解釋一下可能會有用的人。

有一個非常簡單的自定義授權者的概念。當我們創建授權者(基於令牌或基於請求)時,來自客戶端的請求將首先執行授權者(Lambda函數),然後,如果請求被允許,API網關將把請求轉發給上游(或端點URL)。而已!這裏沒有更多的困惑。

這是我期待從文檔。有視頻可用,但他們需要更新,因爲已添加的新功能(如基於請求的授權者)

我正在通過比較AWS API網關和Kong API網關來構建POC。請相信我,我只需要一兩天就可以完成設置Kong和8-10天的AWS API Gateway。不管怎樣,謝謝!

0

您的令牌來源是「授權」,但您的有效載荷在「授權令牌」中發送。

+0

在我的問題,如果你看到我的問題(http://pix.toile-libre.org/upload/original/1507621904.png)屏幕錄像 我已映射「授權」身份映射模板中的「authorizationToken」 。所以最終它只會發送「authorizationToken」。 –

相關問題