我正在尝试了解 Keycloak 的功能,并尝试找到一种在本地环境(localhost)中监视请求流(例如在 Wireshark 中)的方法。在 Windows 环境中我可以使用什么工具来实现此目的?我有一个与 Keycloak 集成的 Angular 应用程序,并且它可以工作。当我请求 localhost:4200 时,浏览器会将我带到 Keycloak 登录屏幕。
为了查看日志,我将
..\keycloak-4.8.3.Final\standalone\configuration
的 Keycloak 服务器中的日志级别从 INFO 更改为 ALL。它确实扩展了控制台中显示的日志条目,但当我的角度应用程序重定向到 Keycloak 以及当我在 Keycloak 登录屏幕中输入用户凭据时,它没有显示任何日志。
我想查看从浏览器到Keycloak的请求流以及所有身份验证请求等。有没有可以用于此目的的工具?
按照您喜欢的方式配置服务器的事件部分。它们存储在数据库中。
Keycloak 包含一套审核功能。您可以录制 每个登录和管理员操作,并在 管理控制台。 Keycloak 还包括一个监听器 SPI,用于监听 事件并可以触发操作。内置侦听器的示例包括 记录文件并在发生事件时发送电子邮件。
我仍然不知道这是否涵盖您的应用程序重定向到 KC 登录屏幕的具体情况。如果没有,您可能需要将其记录在您的应用程序中,但如果您使用 Angular 适配器,这可能会有点棘手,因为它在客户端执行(您需要对您拥有的某个服务器执行 POST 以获得它已记录,或直接切换到任何基于服务器端的 KC 适配器)。
获取事件的另一种方法是从
Keycloak keycloak = KeycloakBuilder.builder()
.serverUrl("localhost")
.realm("myRealm")
.grantType(OAuth2Constants.PASSWORD)
.clientId("myclient")
.clientSecret("xxxx-xxxxx-xxxx-xxx")
.username("foo")//the admin user
.password("password")
.build();
List<EventRepresentation> events = keycloak.realm("myRealm").getEvents();
然后选择您想要定位的事件类型
对我有用的简单方法是让 Keycloak 日志更加积极。请注意,请求流仅在 TRACE 级别可见,而不是在 DEBUG 级别可见(至少对于 Keycloak 26 而言)。
要启用 TRACE 日志记录,只需将
--log-level=TRACE
添加到 Keycloak CLI 命令即可。
这肯定会导致日志充满你不想要的东西。排除事物很容易。例如,我不关心这样的行:
2024-11-22 20:57:09,745 DEBUG [io.netty.util.ResourceLeakDetectorFactory] (vert.x-eventloop-thread-9) Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetec
所以我只需将所有以
io.netty
开头的级别更改回信息:--log-level=TRACE,io.netty=INFO
。
对于 Keycloak 26,所有出现的请求都由
io.vertx.ext.web.impl.RouterImpl
记录,因此如果您不希望日志被污染,也可以尝试 --log-level=INFO,io.vertx.ext.web.impl.RouterImpl=TRACE
。
或者简单地用
grep
表示 Router
,就我而言,这给了我一些有用的东西,例如:
2024-11-22 20:57:47,066 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-6) Router: 341708358 accepting request GET http://localhost:8083/admin/serverinfo
2024-11-22 20:57:47,068 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-4) Router: 341708358 accepting request GET http://localhost:8083/realms/master/protocol/openid-connect/auth?client_id=security-admin-console&redirect_uri=http%3A%2F%2Flocalhost%3A8083%2Fadmin%2Fmaster%2Fconsole%2F&state=1fb3858e-9e06-4b1f-a9ca-21091c13951b&response_mode=query&response_type=code&scope=openid&nonce=515829a5-7e7e-4f9c-901a-d7c84c8710ab&code_challenge=Zmn2EnRqVzSbdApZUpYGbk0enPp3lHuUsJs2HOKbm6g&code_challenge_method=S256
2024-11-22 20:57:54,719 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-9) Router: 918702388 accepting request GET http://10.42.1.15:9000/health/ready
2024-11-22 20:58:04,737 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-9) Router: 918702388 accepting request GET http://10.42.1.15:9000/health/ready
2024-11-22 20:58:14,704 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-9) Router: 918702388 accepting request GET http://10.42.1.15:9000/health/ready
2024-11-22 20:58:24,399 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-9) Router: 341708358 accepting request GET http://localhost:8083/realms/master/protocol/openid-connect/auth?client_id=security-admin-console&redirect_uri=http%3A%2F%2Flocalhost%3A8083%2Fadmin%2Fmaster%2Fconsole%2F&state=1fb3858e-9e06-4b1f-a9ca-21091c13951b&response_mode=query&response_type=code&scope=openid&nonce=515829a5-7e7e-4f9c-901a-d7c84c8710ab&code_challenge=Zmn2EnRqVzSbdApZUpYGbk0enPp3lHuUsJs2HOKbm6g&code_challenge_method=S256
2024-11-22 20:58:24,705 TRACE [io.vertx.ext.web.impl.RouterImpl] (vert.x-eventloop-thread-9) Router: 918702388 accepting request GET http://10.42.1.15:9000/health/ready