zoukankan      html  css  js  c++  java
  • keycloak~自定义SPI的注入与扩展

    项目结构

    1

    自定义SPI注册

    1. 直接复制文件方式

    docker cp keycloak-service-self-spi.jar keycloak:/opt/
    docker cp module-one-add.cli keycloak:/opt/
    docker exec -it keycloak bash
    $JBOSS_HOME/bin/jboss-cli.sh --file=/opt/module-one-add.cli
    

    使用docker commit保存你当前容器为一个新的镜像,然后启动它即可

    2. 打包镜像方式

    Dockerfile

    FROM jboss/keycloak:11.0.3
    USER root
    #self provider
    WORKDIR /opt
    COPY target/keycloak-service-self-spi.jar .
    RUN mkdir cli
    COPY module-one-add.cli cli/
    RUN $JBOSS_HOME/bin/jboss-cli.sh --file=cli/module-one-add.cli
    RUN rm -rf $JBOSS_HOME/standalone/configuration/standalone_xml_history/current
    

    打包

    docker build -t self/keycloak .
    

    后续的扩展

    当有了自己的SPI接口之后,它也有了对应的ProviderFactory和Provider,然后你就可以在扩展它了,一般的步骤是:

    1. 建立新项目
    2. 依赖上面的SPI项目(它已经被注入到keycloak里,就像keycloak系统的spi)
    3. 将新的项目打包上传到/opt/jboss/keycloak/standalone/deployments目录完成自动化部署
    4. 在resources/META-INF/jboss-deployment-structure.xml里添加上面项目spi module
      2
    5. 注册成功之后,在keycloak管理平台的server-info/providers里会有体现
      3

    module-one-add.cli

    # main provider
    module add --name=keycloak-service-self-spi --resources=/opt/keycloak-service-self-spi.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-common,org.hibernate,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,org.keycloak.keycloak-services,org.keycloak.keycloak-model-jpa,org.jboss.logging,javax.api,javax.ws.rs.api,javax.transaction.api,javax.persistence.api,org.jboss.resteasy.resteasy-jaxrs,org.apache.httpcomponents,org.apache.commons.lang,javax.xml.bind.api,com.squareup.okhttp3
    embed-server --server-config=standalone-ha.xml --std-out=echo
    batch
    
    # main provider
    /subsystem=keycloak-server:list-add(name=providers,value=module:keycloak-service-self-spi)
    /subsystem=keycloak-server/spi=SelfProviderFactory/:add
    /subsystem=keycloak-server/spi=SelfProvider/provider=defaultselfprovider/:add(enabled=true)
    
    run-batch
    stop-embedded-server
    
    embed-server --server-config=standalone.xml --std-out=echo
    batch
    
    # main provider
    /subsystem=keycloak-server:list-add(name=providers,value=module:keycloak-phone-provider)
    /subsystem=keycloak-server/spi=SelfProviderFactory/:add
    /subsystem=keycloak-server/spi=SelfProvider/provider=defaultselfprovider/:add(enabled=true)
    
    run-batch
    stop-embedded-server
    

  • 相关阅读:
    转载:史上最全|阿里那些牛逼带闪电的开源工具,你知道几个?
    互怼、IPO、雷潮、寒冬,2018 互联网圈的那些事儿
    微信迎来又一次重大改版 7.0 版本
    公众号文章目录
    聊几个与赚钱相关的小事情
    使用docker Registry快速搭建私有镜像仓库
    开源组件ELK日志系统配置与管理
    Mysql MHA高可用集群架构
    强大的开源企业级数据监控利器Lepus安装与配置管理
    关于下载gitbash客户端
  • 原文地址:https://www.cnblogs.com/lori/p/14343285.html
Copyright © 2011-2022 走看看