服务账号是个什么鬼?
服务账号
每个客户端都有一个内置的服务帐户,该帐户允许其获取访问令牌。(https://www.keycloak.org/docs/latest/server_admin/#_service_accounts)
如何区分用户和服务账号
用户数据和服务账号都存在 user_entity表,区别:
- 服务账号 username 命名方式:service-account-{client id}(必要非充分条件)
- 用户数据能对应到 credential 表,服务账号则无
问题
- 使用 /users 接口查询有时候查不到这些服务账号,有时候能查到?
- /users 接口处理方式(org.keycloak.services.resources.admin.UsersResource#getUsers):
- search 字段不为空,则只根据该字段进行筛选,同时过滤掉 服务账号
- 使用 lastname、username等字段进行查询,结果会包含服务账号
- 默认查询所有用户,会过滤掉服务账号
- /users 接口处理方式(org.keycloak.services.resources.admin.UsersResource#getUsers):