我们如何检测用户是否曾访问过特定客户端

How do we detect if a user has ever visited a particular client

在Keycloak的每个realm中,往往有client表示用户即将访问的应用,在url中表示为client_id,如

${keycloak_root_url}/auth/realms/${realm_name}/protocol/openid-connect/auth?response_type=code&client_id=${client_id}&redirect_uri=${redirect_uri}

我们如何检测用户是否至少成功登录过一次特定客户端?

开箱即用,根据用例类型和使用的客户端流程,您可以:

  1. 启用管理事件,特别是 Event Type : LOGIN,然后查询这些事件以获取用户的 clientID 和 id
  2. 如果有问题的客户正在使用 Browser FlowDirect Grant Flow,那么您可以(在 Authentication 选项卡下)相应地复制并创建您自己的流程之一版本。然后添加一个子流程,强制用户仅在首次登录期间执行操作(例如, 接受 'Terms and Conditions') .之后,在 Authentication Flow Overrides(客户端)下相应地使用您的自定义流程覆盖流程。最后,向用户查询相关客户端要求的首次登录操作

免责声明:我并不是说这些是该用例的最佳解决方案或者它们是防弹