keycloak - 如何读取 Keycloak 用户上次登录的事件
问题描述
我希望能够读取用户上次登录的事件(Keycloak)。所以我已经阅读了 keycloak 文档,但找不到任何可以完成此操作的管理 api。到目前为止,我所做的是在standalone-ha-xml 文件中添加一个 SPI 部分,并在 keycloak 接口上启用 Login 事件。我知道这些日志以 JSON 格式存储在名为 audit.log 的文件中。所以我不确定尝试阅读这个文件并找出用户上次登录的时间是否是个好主意。有什么想法吗?
<audit-logging>
<file-audit-log name="local-audit" path="audit.log" relative-to="jboss.server.log.dir" format="JSON"/>
</audit-logging>
<spi name="eventsListener">
<default-provider>jboss-logging</default-provider>
<provider name="jboss-logging" enabled="true">
<properties>
<property name="success-level" value="info"/>
<property name="error-level" value="warn"/>
</properties>
</provider>
</spi>
解决方案
我认为有更好的方法来做到这一点。首先,您需要打开Events
菜单,然后选择Config
选项卡。检查组中Save Events
的选项Login Events Settings
。您也可以指定类型 ( LOGIN
) 和过期时间(存储多长时间)。然后您可以使用管理 APIGET /{realm}/events
文档阅读它们(需要授权)
https://{host}:{port}/auth/admin/realms/{realm}/events?type=LOGIN
或者您可以在 Keycloak 数据库中查询它们,但我认为第一个选项更好:
SELECT id, client_id, details_json, error, ip_address, realm_id, session_id, event_time, type, user_id
FROM event_entity WHERE type = 'LOGIN';
推荐阅读
- android - 找不到 Android 9.0 (Pie) API 28 ARM 系统映像
- c# - 从 URL 获取 HTML - StreamReader 使用另一种字符编码?
- git - Git rebase 并在 pre-push 钩子期间推送
- swift - 致命错误:只能将 BidirectionalCollections 推进负数
- firebase - 在异步函数中返回值 - Flutter
- r - ggplot2:如何将数学符号分配给两种不同美学的图例标签?
- javascript - 自定义 HTMLElement 组件测试
- python-3.x - 如何判断一个词树是否与另一个相似?
- python - 图像不显示在 Django 中,但链接在搜索栏中有效
- laravel - 我正在拼命地向我的数据库添加图像(laravel 5.2)