18.6. 영역 작업
새 영역 생성
realms
엔드포인트에서 create
명령을 사용하여 새로 활성화된 영역을 생성합니다. 특성을 realm
로 설정하고 활성화됨
.
$ kcadm.sh create realms -s realm=demorealm -s enabled=true
Red Hat Single Sign-On은 기본적으로 영역을 비활성화합니다. 인증을 위해 즉시 영역을 사용할 수 있습니다.
새 오브젝트에 대한 설명도 JSON 형식일 수 있습니다.
$ kcadm.sh create realms -f demorealm.json
파일에서 직접 영역 속성을 사용하여 JSON 문서를 보내거나 문서를 표준 입력으로 파이프할 수 있습니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcadm.sh create realms -f - << EOF { "realm": "demorealm", "enabled": true } EOF
- Windows:
c:\> echo { "realm": "demorealm", "enabled": true } | kcadm create realms -f -
기존 영역 나열
이 명령은 모든 영역의 목록을 반환합니다.
$ kcadm.sh get realms
Red Hat Single Sign-On은 서버의 영역 목록을 필터링하여 사용자가 볼 수 있는 영역만 반환합니다.
모든 영역 속성 목록은 상세할 수 있으며 대부분의 사용자는 영역 이름 및 영역의 활성화 상태와 같은 속성 서브 세트에 관심이 있습니다. --fields
옵션을 사용하여 반환할 특성을 지정할 수 있습니다.
$ kcadm.sh get realms --fields realm,enabled
결과를 쉼표로 구분된 값으로 표시할 수 있습니다.
$ kcadm.sh get realms --fields realm --format csv --noquotes
특정 영역 가져오기
개별 영역을 가져오기 위해 컬렉션 URI에 영역 이름을 추가합니다.
$ kcadm.sh get realms/master
영역 업데이트
영역의 속성을 모두 변경하지 않으려면
-s
옵션을 사용하여 속성의 새 값을 설정합니다.예를 들면 다음과 같습니다.
$ kcadm.sh update realms/demorealm -s enabled=false
쓰기 가능한 모든 속성을 새 값으로 설정하려면 다음을 수행합니다.
-
get
명령을 실행합니다. - JSON 파일의 현재 값을 편집합니다.
다시 제출합니다.
예를 들면 다음과 같습니다.
$ kcadm.sh get realms/demorealm > demorealm.json $ vi demorealm.json $ kcadm.sh update realms/demorealm -f demorealm.json
-
영역 삭제
다음 명령을 실행하여 영역을 삭제합니다.
$ kcadm.sh delete realms/demorealm
영역에 대한 모든 로그인 페이지 옵션 설정
특정 기능을 제어하는 특성을 true
로 설정합니다.
예를 들면 다음과 같습니다.
$ kcadm.sh update realms/demorealm -s registrationAllowed=true -s registrationEmailAsUsername=true -s rememberMe=true -s verifyEmail=true -s resetPasswordAllowed=true -s editUsernameAllowed=true
영역 키 나열
대상 영역의 키
끝점에 대해 get
작업을 사용합니다.
$ kcadm.sh get keys -r demorealm
새 영역 키 생성
새 RSA 생성 키 쌍을 추가하기 전에 대상 영역의 ID를 가져옵니다.
예를 들면 다음과 같습니다.
$ kcadm.sh get realms/demorealm --fields id --format csv --noquotes
kcadm.sh가 공개한 것처럼 기존 공급자보다 우선 순위가 높은 새 키 공급자를 추가하여 -r demorealm
.예를 들면 다음과 같습니다.
Linux:
$ kcadm.sh create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keySize=["2048"]'
Windows:
c:\> kcadm create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keySize=[\"2048\"]"
parentId
속성을 대상 영역의 ID 값으로 설정합니다.새로 추가된 키는 이제
kcadm.sh가 공개한 대로 활성 키가 됩니다. -r demorealm
.
Java 키 저장소 파일에서 새 영역 키 추가
새 키 공급자를 추가하여 JKS 파일로 미리 준비한 새 키 쌍을 추가합니다.
예를 들면 다음과 같습니다.
Linux:
$ kcadm.sh create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keystore=["/opt/keycloak/keystore.jks"]' -s 'config.keystorePassword=["secret"]' -s 'config.keyPassword=["secret"]' -s 'config.keyAlias=["localhost"]'
Windows:
c:\> kcadm create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keystore=[\"/opt/keycloak/keystore.jks\"]" -s "config.keystorePassword=[\"secret\"]" -s "config.keyPassword=[\"secret\"]" -s "config.keyAlias=[\"localhost\"]"
-
키 저장소 ,
keystore
PasswordkeyPassword
,alias
의 속성 값을 특정 키 저장소와 일치하도록 변경해야 합니다. -
parentId
속성을 대상 영역의 ID 값으로 설정합니다.
키를 수동 또는 키 비활성화
패시브를 만들려는 키를 식별합니다.
$ kcadm.sh get keys -r demorealm
-
키의
providerId
특성을 사용하여구성 요소/PROVIDER_ID
와 같은 끝점 URI를 구성합니다. 업데이트를
수행합니다.예를 들면 다음과 같습니다.
Linux:
$ kcadm.sh update components/PROVIDER_ID -r demorealm -s 'config.active=["false"]'
Windows:
c:\> kcadm update components/PROVIDER_ID -r demorealm -s "config.active=[\"false\"]"
다른 주요 속성을 업데이트할 수 있습니다.
-
키를 비활성화하려면 새
enabled
값을 설정합니다(예:config.enabled=["false"]
). -
키의 우선 순위를 변경하려면 새
우선순위
값을 설정합니다(예:config.priority=["110"]
).
이전 키 삭제
- 삭제 중인 키가 비활성 상태이고 비활성화되었는지 확인합니다. 이 작업은 애플리케이션 및 사용자가 보유한 기존 토큰이 실패하지 않도록하기 위한 것입니다.
삭제할 키를 식별합니다.
$ kcadm.sh get keys -r demorealm
키의
providerId
를 사용하여 삭제를 수행합니다.$ kcadm.sh delete components/PROVIDER_ID -r demorealm
영역에 대한 이벤트 로깅 구성
events/config
끝점에서 update
명령을 사용합니다.
eventsListeners
속성에는 이벤트를 수신하는 모든 이벤트 리스너를 지정하여 EventListenerProviderFactory ID 목록이 포함되어 있습니다. 기본 제공 이벤트 스토리지를 제어하는 속성을 사용할 수 있으므로 Admin REST API를 사용하여 이전 이벤트를 쿼리할 수 있습니다. Red Hat Single Sign-On은 서비스 호출 로깅(eventsEnabled
) 및 Admin Console 또는 Admin REST API(adminEventsEnabled
)에서 트리거한 감사 이벤트를 별도로 제어할 수 있습니다. 데이터베이스가 채워지지 않도록 eventsExpiration
이벤트가 만료되도록 설정할 수 있습니다. Red Hat Single Sign-On은 이벤트를 초 단위로
표시(Time-to-Live)로 설정합니다.
모든 이벤트를 수신하는 기본 제공 이벤트 리스너를 설정하고 JBoss-logging을 통해 이벤트를 기록할 수 있습니다. org.keycloak.events
로거를 사용하여 Red Hat Single Sign-On은 오류 이벤트를 WARN
및 기타 이벤트를 DEBUG
로 기록합니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcadm.sh update events/config -r demorealm -s 'eventsListeners=["jboss-logging"]'
- Windows:
c:\> kcadm update events/config -r demorealm -s "eventsListeners=[\"jboss-logging\"]"
예를 들면 다음과 같습니다.
Admin REST를 통해 이벤트를 검색할 수 있도록 감사 이벤트를 포함하여 사용 가능한 모든 ERROR 이벤트에 대해 스토리지를 설정할 수 있습니다.
- Linux:
$ kcadm.sh update events/config -r demorealm -s eventsEnabled=true -s 'enabledEventTypes=["LOGIN_ERROR","REGISTER_ERROR","LOGOUT_ERROR","CODE_TO_TOKEN_ERROR","CLIENT_LOGIN_ERROR","FEDERATED_IDENTITY_LINK_ERROR","REMOVE_FEDERATED_IDENTITY_ERROR","UPDATE_EMAIL_ERROR","UPDATE_PROFILE_ERROR","UPDATE_PASSWORD_ERROR","UPDATE_TOTP_ERROR","VERIFY_EMAIL_ERROR","REMOVE_TOTP_ERROR","SEND_VERIFY_EMAIL_ERROR","SEND_RESET_PASSWORD_ERROR","SEND_IDENTITY_PROVIDER_LINK_ERROR","RESET_PASSWORD_ERROR","IDENTITY_PROVIDER_FIRST_LOGIN_ERROR","IDENTITY_PROVIDER_POST_LOGIN_ERROR","CUSTOM_REQUIRED_ACTION_ERROR","EXECUTE_ACTIONS_ERROR","CLIENT_REGISTER_ERROR","CLIENT_UPDATE_ERROR","CLIENT_DELETE_ERROR"]' -s eventsExpiration=172800
- Windows:
c:\> kcadm update events/config -r demorealm -s eventsEnabled=true -s "enabledEventTypes=[\"LOGIN_ERROR\",\"REGISTER_ERROR\",\"LOGOUT_ERROR\",\"CODE_TO_TOKEN_ERROR\",\"CLIENT_LOGIN_ERROR\",\"FEDERATED_IDENTITY_LINK_ERROR\",\"REMOVE_FEDERATED_IDENTITY_ERROR\",\"UPDATE_EMAIL_ERROR\",\"UPDATE_PROFILE_ERROR\",\"UPDATE_PASSWORD_ERROR\",\"UPDATE_TOTP_ERROR\",\"VERIFY_EMAIL_ERROR\",\"REMOVE_TOTP_ERROR\",\"SEND_VERIFY_EMAIL_ERROR\",\"SEND_RESET_PASSWORD_ERROR\",\"SEND_IDENTITY_PROVIDER_LINK_ERROR\",\"RESET_PASSWORD_ERROR\",\"IDENTITY_PROVIDER_FIRST_LOGIN_ERROR\",\"IDENTITY_PROVIDER_POST_LOGIN_ERROR\",\"CUSTOM_REQUIRED_ACTION_ERROR\",\"EXECUTE_ACTIONS_ERROR\",\"CLIENT_REGISTER_ERROR\",\"CLIENT_UPDATE_ERROR\",\"CLIENT_DELETE_ERROR\"]" -s eventsExpiration=172800
저장된 이벤트 유형을 사용 가능한 모든 이벤트 유형으로 재설정할 수 있습니다. 이 값을 빈 목록에 설정하는 것은 all과 동일합니다.
$ kcadm.sh update events/config -r demorealm -s enabledEventTypes=[]
감사 이벤트 스토리지를 활성화할 수 있습니다.
$ kcadm.sh update events/config -r demorealm -s adminEventsEnabled=true -s adminEventsDetailsEnabled=true
마지막 100개의 이벤트를 받을 수 있습니다. 이벤트는 최신부터 가장 오래된 것까지 정렬됩니다.
$ kcadm.sh get events --offset 0 --limit 100
저장된 모든 이벤트를 삭제할 수 있습니다.
$ kcadm delete events
캐시 플러시
이러한 끝점 중 하나와 함께
create
명령을 사용하여 캐시를 지웁니다.-
clear-realm-cache
-
clear-user-cache
-
clear-keys-cache
-
영역을
대상 영역과 동일한 값으로 설정합니다.예를 들면 다음과 같습니다.
$ kcadm.sh create clear-realm-cache -r demorealm -s realm=demorealm $ kcadm.sh create clear-user-cache -r demorealm -s realm=demorealm $ kcadm.sh create clear-keys-cache -r demorealm -s realm=demorealm
내보낸 .json 파일에서 영역 가져오기
-
partialImport
엔드포인트에서create
명령을 사용합니다. -
ifResourceExists
를FAIL
,SKIP
또는OVERWRITE
로 설정합니다. 내보낸 영역
.json
파일을 제출하려면-f
를 사용합니다.예를 들면 다음과 같습니다.
$ kcadm.sh create partialImport -r demorealm2 -s ifResourceExists=FAIL -o -f demorealm.json
영역이 아직 없으면 먼저 만듭니다.
예를 들면 다음과 같습니다.
$ kcadm.sh create realms -s realm=demorealm2 -s enabled=true