[英]Getting 401 Unauthorized from AWS Cognito + API Gateway when accessing from Postman or cURL
[英]API gateway Cognito user pool authorizer - 401 unauthorized
我試圖讓我的 API 網關與 Cognito 用戶池授權方一起工作,但我似乎無法讓它工作。 到目前為止,我沒有使用任何 SDK。 一些細節——對於 Cognito 池,我將 ID 提供者設置為 Cognito 用戶池,將 Oauth 流“隱式授權”和范圍設置為“openid”。 創建了一個還生成了客戶端密碼的應用程序(和域)。 電子郵件是唯一的字段。 - 在 API 網關上,我為認知身份驗證和標頭添加了與“授權”相同的用戶池。 沒有添加范圍,也沒有令牌驗證。
我使用 Cognito 的默認登錄頁面登錄並檢索“id_token”(登錄后出現在 URL 中)並在郵遞員中使用它來將我的 API 觸發為“401 未授權”。 我在 API 網關授權測試工具中使用了相同的令牌,但我仍然未獲得授權。 很明顯我的令牌是問題所在。
我已經嘗試了 oauth 流程和范圍以及 api 網關與 lambda 集成的各種組合,以創建另一個具有模擬集成的組合。 還創建了不同的用戶池和應用程序,有和沒有客戶端密碼,同樣的錯誤。
如果上面沒有工作我會很好(相信我的錯誤)但同樣的事情適用於嘗試過的同事。 唯一不同的是,在登錄后,他定向到一個本地主機頁面,在那里他捕獲了相同的“id_token”並使用該令牌成功訪問了 API 網關。
所以我不知道有什么區別? 它不應該像我嘗試的那樣工作嗎?
當我從郵遞員那里點擊 API 時,一些 cloudwatch 訪問日志。 (也試過卷曲)
{ "requestId": "bb9ba6a2-6c25-11e8-b024-530b33bce48d", "ip": "xxxx", "caller": "-", "user": "-", "requestTime": "09/Jun/ 2018:20:43:15 +0000", "httpMethod": "GET", "resourcePath": "/test", "status": "401", "protocol": "HTTP/1.1", "responseLength": "26", "authProvider": "-", "authType": "-", "claimProperty": "-", "property": "-", "principalId": "-" }
謝謝。 任何幫助表示贊賞。
結果證明復制access_token
也是一個非常愚蠢的錯誤。 使用正確的id_token
就可以了。 花了我2天才弄明白!!!
盡管我的id_token
有效並通過標頭authorization
正確傳遞給 API 網關,但我還是出現了這種症狀
在您的 API 網關資源方法執行設置API:YourAPI
> Resources
> GET
> Method Request
> Settings
確保OAuth Scopes
設置為product-api/read_product
我希望我生命中的 18 個小時也能為您節省一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.