场景 ListSessions
以管理员用户身份登录,使用用户名和密码,并列出 Realm 内的用户和客户端会话。
查看 场景概述 以获取所有场景列表。
此场景的步骤
-
通过 API 使用管理员用户名和密码登录。
-
查找客户端并列出该客户端下的所有用户会话。
-
查找用户并列出该用户下的所有用户会话,以及连接到它们的客户端会话。
查看 ListSessions.scala 中的源代码以了解详细信息。
关于此场景的详细信息
这些场景使用主管理员帐户通过内置的 admin-cli
客户端执行 Realm 操作。
此信息通过选项 --admin-username
和 --admin-password
指定给场景。
在这些场景中,使用服务帐户令牌无关紧要,因为
-
现实世界中的列表会话操作使用主 Realm 的管理员凭据执行
-
由于令牌包含所有 Realm 权限,因此它会快速增长,并很快超过标头的最大长度(导致
431 Request Header Fields Too Large
响应)。
要查看查找机制,请参阅 KeycloakScenarioBuilder.scala 中的 getClientUUID 和 getUserUUID 方法。
基本场景:单个用户和单个客户端
运行场景
以下场景使用默认设置运行 30 秒。
查看 配置基准测试 以获取其他 CLI 选项。
bin/kcb.sh \
--scenario=keycloak.scenario.admin.ListSessions \
--server-url=http://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 脚本执行。
curl 'https://keycloak-server/realms/master/dataset/create-realms?realm-name=realm-0&count=1&clients-per-realm=30&users-per-realm=200'
dataset-import.sh
shell 脚本设置用户和客户端./dataset-import.sh -a create-realms -r 1 -c 5 -u 30
错误消息
- 无效的用户名或密码
-
可以通过在 https://{keyloak-server}/realms/{realm}/account/ 的帐户控制台中尝试以用户身份登录来手动测试。这可能具有以下原因
-
具有给定用户名的用户不存在。
解决方法: 检查命令行上或默认设置中给出的用户是否在给定的 Realm 中存在。
-
用户使用不同的密码。
解决方法: 检查用户是否设置了正确的密码。
-
--users-per-realm
和--clients-per-realm
提供的范围大于来自 生成数据集 模块的已播种用户和客户端。解决方法: 检查
--users-per-realm
和--clients-per-realm
的范围是否小于可用用户和客户端。
-
- 未找到 Realm
-
用于场景的 Realm 不存在。这可能有以下原因
-
命令行上指定的 Realm 与 Keycloak 设置不匹配,或者如果在 CLI 上指定了 Realm 范围,则其中一个 Realm 不存在。
解决方法: 通过登录 Keycloak 实例检查 CLI 是否与 Keycloak 配置匹配。
-
没有使用 CLI 选项来指定 Realm,因此场景使用
realm-0
,它不存在。解决方法: 在 Keycloak 实例中创建 Realm
realm-0
,或使用 CLI 选项指定存在的 Realm。
-