OAuth2 JWT 認證
介紹
OAuth2 JWT 認證是 OAuth 2.0 身份認證方案之一,允許客戶端透過 JSON Web Token(JWT)進行身份驗證。
OpenResty Edge 中提供了對應的頁面規則動作來實現此功能。
這個動作有以下引數:
- 關鍵字:用於指定關鍵字的型別,取值有:探測、對稱秘鑰、公鑰。
- 選擇
探測
時,會要求輸入探測 URL。如 https://accounts.google.com/.well-known/openid-configuration。這是一種發現 OAuth2 配置資訊的方式。它允許客戶端在不與認證伺服器直接互動的情況下,自動獲取 OAuth2 協議需要的資訊,例如授權伺服器的地址,令牌端點和令牌簽名公鑰。 - 選擇
對稱秘鑰
時,會要求輸入秘鑰。 - 選擇
公鑰
時,會要求輸入公鑰。
- 選擇
- 接受不支援的演算法:如果要拒絕使用不支援演算法簽名的令牌,請不要開啟這個選項。如果開啟,則完全無法驗證令牌簽名。
- 令牌簽名演算法:用於指定一種或多種令牌簽名演算法。取值有:HS256、HS512、RS256、RS512、ES256、ES512、none。
示例
- 我們使用對稱秘鑰來進行演示,因此這裡型別選擇
對稱秘鑰
。 - 加密演算法選擇 HS256,這是一種對稱金鑰的雜湊演算法(使用 SHA-256 的 HMAC)。
傳送一個不帶認證資訊的請求:
$ curl http://test.com/anything -v
...
< HTTP/1.1 403 Forbidden
...
可以看到返回了 403 狀態碼,表示缺少認證資訊或認證資訊不正確,禁止訪問。
然後傳送一個帶有錯誤的認證資訊的請求:
$ curl http://test.com/anything -H 'Authorization: Bearer invalid-token' -v
...
< HTTP/1.1 403 Forbidden
...
同樣返回了 403 狀態碼。
接著再傳送一個帶正確認證資訊的請求:
$ curl http://test.com/anything -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIifQ._FOTfoCTzKHWcBDYf1rfRkg-g6D_Mg8dnccLR_geCH0' -v
...
< HTTP/1.1 404 Not Found
...
返回了 404 而沒有返回 403,表示已經透過了認證,但請求訪問了不存在的資源(/anything)。