2017-08-02 41 views
0

假設我有AWS Lambda和相關API網關端點API(例如/user/{userid}/activities)。公共API如何辨別經過身份驗證的用戶與匿名用戶

此API可以從已通過身份驗證的用戶和未經身份驗證的用戶中調用,並基於此用法進行不同的操作。

經過身份驗證的用戶是擁有有效JWT的用戶。未經身份驗證的用戶,沒有JWT或其JWT已過期或無效。

此JWT由自定義授權者驗證,他們根據令牌的簽名公鑰和其他參數(過期日期,發行者等)進行驗證。

/user/{userid}/activities相關的lambda需要知道自定義授權人是否驗證(或不)相關的調用,因此可以選擇應使用的行爲。

我該怎麼做?

+0

您是否使用aws Cognito?如果是這樣的話,支持雙方都發放令牌的身份驗證和未經身份驗證的身份 – Ashan

回答

0

方法取決於您區分匿名用戶和經過身份驗證的用戶的方式。

鑑於您希望在未指定授權標頭時標識匿名用戶,AWS APIGateway授權人將始終拒絕訪問,因爲缺少標頭。

你可以考慮以下選項:

  1. 總是使用令牌(對於匿名/身份驗證的用戶)。
  2. 將授權邏輯移至一個lambda包裝器(因此您不會爲這些端點使用自定義授權者)。
  3. 通過路由器進行代理,因此您有機會添加授權標頭(如果沒有客戶端更改,服務器爲匿名用戶添加預定義令牌)。

無論哪種方式,您將需要端點簽名更改爲類似:/user/activities並從上下文推斷用戶id,上下文可以用適當的用戶id後驗證由授權人進行更新。

相關問題