首页 > 解决方案 > 如何读取 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>

标签: keycloak

解决方案


我认为有更好的方法来做到这一点。首先,您需要打开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';

推荐阅读