情境列表連線階段

以管理員使用者身分,使用使用者名稱和密碼登入,並列出領域內的使用者和客戶端連線階段。

請參閱情境概觀以取得所有情境的清單。

此情境的步驟

  1. 透過 API 使用管理員使用者名稱和密碼登入。

  2. 查詢客戶端並列出該客戶端下的所有使用者連線階段。

  3. 查詢使用者並列出該使用者下的所有使用者連線階段,以及與其連線的客戶端連線階段。

詳細資訊請參閱原始程式碼:ListSessions.scala

關於此情境的詳細資訊

這些情境使用主管理員帳戶,透過內建的 admin-cli 客戶端執行領域操作。

此資訊透過選項 --admin-username--admin-password 指定給情境。

在這些情境中,使用服務帳戶權杖無關緊要,因為

  • 實際的列表連線階段操作是使用主領域的管理員憑證執行

  • 由於權杖包含所有領域權限,因此它會快速增長,並會快速超過標頭的最大長度(導致 431 Request Header Fields Too Large 回應)。

若要查看查詢如何運作,請參閱 KeycloakScenarioBuilder.scala 中的 getClientUUID 和 getUserUUID 方法。

基本情境:單一使用者和單一客戶端

先決條件

  • Keycloak 正在執行。

  • 領域、使用者和客戶端存在,並具有 CLI 上列出的值。

  • 此情境不需要為客戶端設定任何服務帳戶角色。

執行情境

以下情境以預設設定執行 30 秒。

請參閱設定效能基準以取得其他 CLI 選項。

bin/kcb.sh \
--scenario=keycloak.scenario.admin.ListSessions \
--server-url=https://127.0.0.1:8080/ \
--measurement=30 \
--username=user-0 \
--client-id=client-0 \
--realm-name=test-realm \
--admin-username=admin \
--admin-password=admin \
--log-http-on-failure

變體:使用者範圍和客戶端範圍

先決條件

若要列出來自不同數量使用者和客戶端的連線階段,額外的先決條件是一組使用者和客戶端。

這可以使用本指南的產生資料集章節建立。

這可以使用其 REST API 或 dataset-import.sh shell 腳本執行。

替代方案 1:使用 REST API 設定使用者和客戶端
curl 'https://keycloak-server/realms/master/dataset/create-realms?realm-name=realm-0&count=1&clients-per-realm=30&users-per-realm=200'
替代方案 2:使用 dataset-import.sh shell 腳本設定使用者和客戶端
./dataset-import.sh -a create-realms -r 1 -c 5 -u 30

執行情境

使用以下範例命令從給定的範圍縮放使用者和客戶端。

bin/kcb.sh \
--scenario=keycloak.scenario.admin.ListSessions \
--server-url=https://127.0.0.1:8080/ \
--measurement=30 \
--users-per-realm=30 \
--clients-per-realm=5 \
--admin-username=admin \
--admin-password=admin \
--log-http-on-failure

錯誤訊息

使用者名稱或密碼無效

這可以透過嘗試以使用者身分登入 https://{keyloak-server}/realms/{realm}/account/ 的帳戶主控台來手動測試。這可能會有以下原因

  • 具有給定使用者名稱的使用者不存在。

    補救措施:檢查命令列上給定的使用者或預設使用者是否存在於給定的領域中。

  • 使用者具有不同的密碼。

    補救措施:檢查使用者是否設定了正確的密碼。

  • --users-per-realm--clients-per-realm 提供的範圍大於來自產生資料集模組的種子使用者和客戶端。

    補救措施:檢查 --users-per-realm--clients-per-realm 的範圍是否小於可用的使用者和客戶端。

找不到領域

用於情境的領域不存在。這可能會有以下領域

  • 命令列上指定的領域與 Keycloak 設定不符,或者如果在 CLI 上指定了領域範圍,則其中一個領域不存在。

    補救措施:透過登入 Keycloak 實例來檢查 CLI 是否與 Keycloak 設定相符。

  • 沒有使用 CLI 選項來指定領域,因此情境使用不存在的 realm-0

    補救措施:在 Keycloak 實例中建立一個領域 realm-0,或使用 CLI 選項來指定一個存在的領域。