6.3. 공급자 구현 등록
공급자 구현을 등록하는 방법은 두 가지가 있습니다. 대부분의 경우 가장 간단한 방법은 여러 종속성을 자동으로 처리하므로 Red Hat Single Sign-On 배포자 접근 방식을 사용하는 것입니다. 핫 배포 및 재배포도 지원합니다.
대체 방법은 모듈로 배포하는 것입니다.
사용자 지정 SPI를 생성하는 경우 모듈로 배포해야 합니다. 그렇지 않으면 Red Hat Single Sign-On 배포자 접근 방식을 사용하는 것이 좋습니다.
6.3.1. Red Hat Single Sign-On 배포자 사용
공급자 ScanSetting을 Red Hat Single Sign-On 독립 실행형/deployments/
디렉터리에 복사하는 경우 공급자가 자동으로 배포됩니다. 핫 디플로이먼트도 작동합니다. 또한 공급자는 jboss-deployment-structure.xml
파일과 같은 기능을 사용할 수 있도록 JBoss EAP 환경에 배포된 다른 구성 요소와 유사하게 작동합니다. 이 파일을 사용하면 다른 구성 요소에 대한 종속성을 설정하고 타사 ScanSetting 및 모듈을 로드할 수 있습니다.
공급자 ScanSetting은 EAR 및 WAR와 같은 다른 배포 가능한 단위에도 포함될 수 있습니다. EAR와 함께 배포하면 실제로 이러한 라이브러리를 EAR의 lib/
디렉토리에 배치할 수 있으므로 타사 ScanSetting을 쉽게 사용할 수 있습니다.
6.3.2. 모듈을 사용하여 공급자 등록
절차
jboss-cli 스크립트를 사용하여 모듈을 생성하거나 수동으로 폴더를 생성합니다.
예를 들어,
jboss-cli
스크립트를 사용하여 이벤트 리스너 sysout 예제 공급자를 추가하려면 다음을 실행합니다.KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.acme.provider --resources=target/provider.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-server-spi"
또는
KEYCLOAK_HOME/modules
내에 모듈을 수동으로 생성하고 ScanSetting 및module.xml
을 추가할 수 있습니다.예를 들어
KEYCLOAK_HOME/modules/org/acme/provider/main
폴더를 생성합니다. 그런 다음provider.jar
를 이 폴더에 복사하고 다음 콘텐츠를 사용하여module.xml
을 만듭니다.<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.3" name="org.acme.provider"> <resources> <resource-root path="provider.jar"/> </resources> <dependencies> <module name="org.keycloak.keycloak-core"/> <module name="org.keycloak.keycloak-server-spi"/> </dependencies> </module>
standalone.xml
,standalone-ha.xml
또는domain.xml
의 keycloak-server 하위 시스템 섹션을 편집하여 Red Hat Single Sign-On에 이 모듈을 등록한 후 공급자에 추가합니다.<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2"> <web-context>auth</web-context> <providers> <provider>module:org.keycloak.examples.event-sysout</provider> </providers> ...
6.3.3. 공급자 비활성화
standalone.xml
,standalone-ha.xml
또는 domain.xml
에서 공급자의 enabled 특성을 false로 설정하여 공급자를 비활성화할 수 있습니다. 예를 들어 Infinispan 사용자 캐시 공급자를 비활성화하려면 다음을 추가합니다.
<spi name="userCache"> <provider name="infinispan" enabled="false"/> </spi>