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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM