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保存你當前容器爲一個新的鏡像,而後啓動它便可java

2. 打包鏡像方式

Dockerfiledocker

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

打包apache

docker build -t self/keycloak .

後續的擴展

當有了本身的SPI接口以後,它也有了對應的ProviderFactory和Provider,而後你就能夠在擴展它了,通常的步驟是:api

  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
相關文章
相關標籤/搜索