Version: 2.3.3
Session
#
用途說明為經過API Manager代理的APIs管理瀏覽器之工作階段(Session)。
#
欄位配置說明變數 | 類型 | 預設值 | 說明 | 必填 |
---|---|---|---|---|
secret | string | random number | 查詢字串的列表,API Manager會審查並從中取得JWTs。 | |
cookie_names | string | session | cookie的名稱。 | |
cookie_lifetime | number | 3600 | session會保持暢通的時間區間(單位為秒)。 | |
cookie_idletime | number | cookie閒置時間(單位為秒)。在這段期間,session是無效的。 | ||
cookie_renew | number | 600 | session在多久之後即被更新(單位為秒)。 | |
cookie_path | string | / | cookie在主機的所在位置。 | |
cookie_domain | string | 準備交換cookie的域口。 | ||
cookie_samesite | string | Strict | 決定在跨網站請求中,cookie如何被傳送。有以下三種方式: 1. Strict : 完全禁止第三方Cookies,只有當前網頁的URL與請求目標一致,才會送出Cookie。2. Lax :大多數情況也是不發送Cookie到第三方,但是Get請求除外。例如,從一個連結跳轉到原始的網頁。3. None 或 off : 容許所有網站對Cookie的存取。在新版的瀏覽器中,使用這個方式時,必須加上Secure參數。詳請請參考SameSite cookies docs。 | |
cookie_httponly | boolean | true | 提供 HttpOnly 標籤,因此cookie會直接送至伺服器。請參考Restrict access to cookies docs。 | |
cookie_secure | boolean | true | 探供 Secure 標籤,因此cookie會在加密的請求中使用HTTPS協定直接傳送至伺服器。請參考Restrict access to cookies docs。 | |
cookie_discard | number | 10 | 在舊有的session存活時間更新後,決定多少時間(單位為秒)後將捨棄這個舊有的session。 | |
storage | string | cookie | Session資訊儲存的地方。kong :儲存加密的session資訊在現有database策略,cookie不會包含任何session資料。cookie :儲存加密的session資訊在cookie本身。 | |
logout_methods | array of string | ["POST", "DELETE"] | 可以結束session的方法,可以選擇的項目有 POST 、 DELETE 以及 GET 。 | |
logout_query_arg | string | session_logout | 會夾帶在登出請求的查詢字串。 | |
logout_post_arg | string | session_logout | POST引數會夾帶在登出請求中。不要修改這項屬性。 |
#
用法示例#
在全局啟用插件- 從網站左邊Menu中
外掛插件
頁面中,點選右上角的新增外掛插件
:
- 點選後,選擇
認證
頁籤,並啟用Session,填寫內容參考欄位配置說明,設定成功後,任何請求(不分服務、路由、用戶)皆需經過認證才能通過。
#
在服務端上啟用插件- 從網站左邊Menu中
服務 > 服務列表
頁面中,選擇要啟用此插件的服務,假設為google
,點選對應的編輯按鈕:
- 在編輯畫面中,點選上方的
外掛插件
頁籤,再點選頁籤內容上方的新增外掛插件
按鈕:
點選後,選擇 認證
頁籤,並啟用Session,填寫內容參考欄位配置說明,設定成功後,僅有此服務(範例為google
)請求需經過認證才能通過。
#
在路由端上啟用插件可以由兩種方式來選擇路由,並啟用插件:
#
方式一:路由列表- 從網站左邊Menu中
服務 > 路由列表
頁面中,選擇要啟用此插件的路由,假設為google
,點選對應的編輯按鈕:
#
方式二:服務 > 服務列表 > 路由列表- 從網站左邊Menu中
服務 > 服務列表
頁面中,選擇要啟用此插件的路由 所屬之服務(假設為google
),點選對應的編輯按鈕。
在編輯畫面中,點選上方的 路由
頁籤,選擇要啟用此插件的路由(假設為google
),點選對應的編輯按鈕:
- 承第1步,點擊上述兩種方式之一的編輯按鈕後,在編輯畫面中,點選上方的
外掛插件
頁籤,再點選頁籤內容上方的新增外掛插件
按鈕:
點選新增外掛插件
按鈕後,選擇 認證
頁籤,並啟用Session,填寫內容參考欄位配置說明,設定成功後,僅有此路由(範例為google
)請求需經過認證才能通過。
#
驗證Session插件必須與其它的驗證插件一起使用。當有其它驗證插件開啟時,如果沒有找到任何的session,則會維持原本的插件邏輯。
為了讓匿名用戶的存取被阻擋,因此需要開啟Request Termination的插件在匿名用戶身上。如果沒有做這個動作,則所有請求都會通過。
#
設立驗證環境- 創立測試的服務及路由。
在服務開啟Key Auth之插件。
此時在console上送出以下指令
會得到以下回應
代表插件正常運作,並阻擋未通過驗證之請求。
- 創立匿名用戶以及測試用戶,並在測試用戶建立Key Auth的憑證。
- 將匿名用戶之ID加入服務底下已開啟之Key Auth插件。
- 在服務底下開啟Session插件,將cookie_secure設為 關閉 以及將storage改成 kong 。
- 在匿名用戶底下開啟 Request Termination 插件。
#
驗證- 此時在console上送出以下指令
會得到 403
以及剛剛設定的訊息。
- 使用剛剛建立的 Key Auth 憑證送出以下指令
會得到回應,其中會有標頭 Set-Cookie
,大概會像下列的樣子:
則可以將其值加入指令中
也可以得到正常的回應。