keycloak spi 开发

keycloak 事件监听的spi开发测试

1. 新建简单maven工程

注意keycloak包的scope为provided


            org.keycloak
            keycloak-services
            4.8.3.Final
            provided
        
        
            org.keycloak
            keycloak-core
            4.8.3.Final
            provided
        
        
            org.keycloak
            keycloak-server-spi
            4.8.3.Final
            provided
        
        ...
  • 如要相关依赖打肥包
    可以使用插件maven-assembly-plugin

2. spi开发

  • 实现EventListenerProvider
public class MyEventListenerProvider implements EventListenerProvider{
  org.slf4j.Logger log = LoggerFactory.getLogger(MyEventListenerProvider.class);
  private List events;

  public MyEventListenerProvider(List events) {
      System.out.println("events构造方法");
      this.events = events;
  }

  @Override
  public void onEvent(Event event) {
      System.out.println("deng"+event.getTime()+" realmId:"+event.getRealmId()+" type:"+event.getType().name());
      log.info(event.getClientId());
      events.add(event);
  }

  @Override
  public void close() {

  }

  @Override
  public void onEvent(AdminEvent event, boolean includeRepresentation) {
      // Assume this implementation just ignores admin events
      System.out.println("deng"+event.getTime());
  }

  
}

2.实现EventListenerProviderFactory

public class MyEventListenerProviderFactory implements EventListenerProviderFactory {

    private List events;

    public String getId() {
        return "my-deng";
    }

    public void init(Config.Scope config) {
        
        System.out.println("init " );
        events = new LinkedList();
    }

    public void postInit(KeycloakSessionFactory factory) {
    }

    public EventListenerProvider create(KeycloakSession session) {
        System.out.println("create "+session.getContext().getContextPath());
        return new MyEventListenerProvider(events);
    }

    public void close() {
    }

    
    }
  1. 建立META-INF\services文件夹
    以实现的接口全限定类名为文件名,文件内容为具体实现类的全限定类名
    文件名称:org.keycloak.events.EventListenerProviderFactory
    内容: com.dengji85.keycloak.spi.MyEventListenerProviderFactory

3. 部署

将打好的jar包copy到keycloak主目录\standalone\deployments
这个目录会自动部署也支持热部署
在管理控制台配置事件监听器
keycloak spi 开发_第1张图片
keycloak_spi.png

访问服务端查看日志信息:


keycloak spi 开发_第2张图片
TIM截图20190221114354.png

参考:

*Keycloak SPI adding a custom event listener module
*keycloak SPI 开发讲解
*keycloak老版本文档

你可能感兴趣的:(keycloak spi 开发)