监控来自Keycloak服务器的请求的方法

问题描述 投票:0回答:3

我正在尝试了解 Keycloak 的功能,并尝试找到一种在本地环境(localhost)中监视请求流(例如在 Wireshark 中)的方法。在 Windows 环境中我可以使用什么工具来实现此目的?我有一个与 Keycloak 集成的 Angular 应用程序,并且它可以工作。当我请求 localhost:4200 时,浏览器会将我带到 Keycloak 登录屏幕。

为了查看日志,我将

..\keycloak-4.8.3.Final\standalone\configuration
的 Keycloak 服务器中的日志级别从 INFO 更改为 ALL。它确实扩展了控制台中显示的日志条目,但当我的角度应用程序重定向到 Keycloak 以及当我在 Keycloak 登录屏幕中输入用户凭据时,它没有显示任何日志。

我想查看从浏览器到Keycloak的请求流以及所有身份验证请求等。有没有可以用于此目的的工具?

oauth-2.0 keycloak openid-connect
3个回答
4
投票

按照您喜欢的方式配置服务器的事件部分。它们存储在数据库中。

Keycloak 包含一套审核功能。您可以录制 每个登录和管理员操作,并在 管理控制台。 Keycloak 还包括一个监听器 SPI,用于监听 事件并可以触发操作。内置侦听器的示例包括 记录文件并在发生事件时发送电子邮件。

Event config 1

Event config 2

我仍然不知道这是否涵盖您的应用程序重定向到 KC 登录屏幕的具体情况。如果没有,您可能需要将其记录在您的应用程序中,但如果您使用 Angular 适配器,这可能会有点棘手,因为它在客户端执行(您需要对您拥有的某个服务器执行 POST 以获得它已记录,或直接切换到任何基于服务器端的 KC 适配器)。


0
投票

获取事件的另一种方法是从

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();

然后选择您想要定位的事件类型


0
投票

对我有用的简单方法是让 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
© www.soinside.com 2019 - 2024. All rights reserved.