6.4. 클라이언트 등록 CLI 사용
절차
- 자격 증명으로 로그인하여 인증된 세션을 시작합니다.
클라이언트 등록 REST끝점에서 명령을 실행합니다.예를 들면 다음과 같습니다.
Linux:
$ kcreg.sh config credentials --server http://localhost:8080/auth --realm demo --user user --client reg-cli $ kcreg.sh create -s clientId=my_client -s 'redirectUris=["http://localhost:8980/myapp/*"]' $ kcreg.sh get my_clientWindows:
c:\> kcreg config credentials --server http://localhost:8080/auth --realm demo --user user --client reg-cli c:\> kcreg create -s clientId=my_client -s "redirectUris=[\"http://localhost:8980/myapp/*\"]" c:\> kcreg get my_client참고프로덕션 환경에서 네트워크 스니퍼에 토큰이 노출되지 않도록
https를 사용하여 Red Hat Single Sign-On에 액세스해야 합니다.
Java의 기본 인증서 신뢰 저장소에 포함된 신뢰할 수 있는 CA(인증 기관) 중 하나에서 서버의 인증서를 발급하지 않은 경우
truststore.jks파일을 준비하고 클라이언트 등록 CLI에 이를 사용하도록 지시합니다.예를 들면 다음과 같습니다.
Linux:
$ kcreg.sh config truststore --trustpass $PASSWORD ~/.keycloak/truststore.jksWindows:
c:\> kcreg config truststore --trustpass %PASSWORD% %HOMEPATH%\.keycloak\truststore.jks
6.4.1. 로그인 링크 복사링크가 클립보드에 복사되었습니다!
절차
- 클라이언트 등록 CLI로 로그인할 때 서버 끝점 URL과 영역을 지정합니다.
-
사용자 이름 또는 클라이언트 ID를 지정하여 특수 서비스 계정을 사용합니다. 사용자 이름을 사용하는 경우 지정된 사용자의 암호를 사용해야 합니다. 클라이언트 ID를 사용하는 경우 암호 대신 클라이언트 시크릿 또는
서명 JWT를 사용합니다.
로그인 방법에 관계없이 로그인하는 계정에는 클라이언트 등록 작업을 수행할 수 있는 적절한 권한이 필요합니다. 마스터가 아닌 영역에 있는 모든 계정에는 동일한 영역 내의 클라이언트를 관리할 수 있는 권한만 가질 수 있습니다. 다른 영역을 관리해야 하는 경우 다른 영역에서 여러 사용자를 구성하거나 마스터 영역에 단일 사용자를 생성하고 다른 영역에서 클라이언트를 관리하는 역할을 추가할 수 있습니다.
클라이언트 등록 CLI로 사용자를 구성할 수 없습니다. 관리 콘솔 웹 인터페이스 또는 관리 클라이언트 CLI를 사용하여 사용자를 구성합니다. 자세한 내용은 서버 관리 가이드를 참조하십시오.
kcreg 가 성공적으로 로그인하면 권한 부여 토큰을 수신하여 개인 구성 파일에 저장하므로 후속 호출에 토큰을 사용할 수 있습니다. 구성 파일에 대한 자세한 내용은 6.4.2절. “대체 구성 작업” 을 참조하십시오.
클라이언트 등록 CLI 사용에 대한 자세한 내용은 기본 도움말을 참조하십시오.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh help
- Windows:
c:\> kcreg help
인증된 세션을 시작하는 방법에 대한 자세한 내용은 kcreg config credentials --help 를 참조하십시오.
6.4.2. 대체 구성 작업 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 클라이언트 등록 CLI는 사용자의 홈 디렉터리에 있는 기본 위치 ./.keycloak/kcreg.config 에서 구성 파일을 자동으로 유지합니다. --config 옵션을 사용하여 다른 파일 또는 위치를 가리켜 인증된 여러 세션을 병렬로 유지 관리할 수 있습니다. 단일 스레드에서 단일 구성 파일에 연결된 작업을 수행하는 가장 안전한 방법입니다.
구성 파일이 시스템의 다른 사용자에게 표시되도록 하지 마십시오. 구성 파일에는 비공개로 유지해야 하는 액세스 토큰과 시크릿이 포함되어 있습니다.
편리하지 않고 더 많은 토큰 요청이 필요한 경우에도 모든 명령에 --no-config 옵션을 사용하여 구성 파일에 시크릿을 저장하지 않도록 할 수 있습니다. 각 kcreg 호출을 사용하여 모든 인증 정보를 지정합니다.
6.4.3. 초기 액세스 및 등록 액세스 토큰 링크 복사링크가 클립보드에 복사되었습니다!
사용하려는 Red Hat Single Sign-On 서버에 계정이 구성되어 있지 않은 개발자는 클라이언트 등록 CLI를 사용할 수 있습니다. 이는 영역 관리자가 개발자에게 Initial Access Token을 발행하는 경우에만 가능합니다. 영역 관리자는 이러한 토큰을 발행하고 배포하는 방법을 결정할 수 있습니다. 영역 관리자는 Initial Access Token의 최대 기간과 이를 사용하여 생성할 수 있는 총 클라이언트 수를 제한할 수 있습니다.
개발자에게 Initial Access Token이 있으면 개발자는 kcreg 구성 자격 증명을 사용하여 인증하지 않고 새 클라이언트를 생성하는 데 사용할 수 있습니다. Initial Access Token은 구성 파일에 저장되거나 kcreg create 명령의 일부로 지정할 수 있습니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh config initial-token $TOKEN
$ kcreg.sh create -s clientId=myclient
또는
$ kcreg.sh create -s clientId=myclient -t $TOKEN
- Windows:
c:\> kcreg config initial-token %TOKEN%
c:\> kcreg create -s clientId=myclient
또는
c:\> kcreg create -s clientId=myclient -t %TOKEN%
Initial Access Token을 사용하는 경우 서버 응답에 새로 발행된 등록 액세스 토큰이 포함됩니다. 해당 클라이언트의 후속 작업은 해당 클라이언트에만 유효한 해당 토큰으로 인증하여 수행해야 합니다.
클라이언트 등록 CLI는 개인 구성 파일을 자동으로 사용하여 이 토큰을 저장하고 관련 클라이언트와 함께 사용합니다. 모든 클라이언트 작업에 동일한 구성 파일을 사용하는 한 개발자가 이러한 방식으로 생성된 클라이언트를 읽기, 업데이트 또는 삭제할 필요가 없습니다.
Initial Access 및 등록 액세스 토큰에 대한 자세한 내용은 클라이언트 등록을 참조하십시오.
클라이언트 등록 CLI로 토큰을 구성하는 방법에 대한 자세한 내용은 kcreg 구성 initial-token --help 및 kcreg config registration-token --help 명령을 실행합니다.
6.4.4. 클라이언트 구성 생성 링크 복사링크가 클립보드에 복사되었습니다!
자격 증명을 사용하여 인증하거나 Initial Access Token을 구성한 후 첫 번째 작업은 일반적으로 새 클라이언트를 생성하는 것입니다. 준비된 JSON 파일을 템플릿으로 사용하고 일부 속성을 설정하거나 재정의하는 경우가 많습니다.
다음 예제에서는 JSON 파일을 읽고, 포함할 수 있는 클라이언트 ID를 재정의하고, 다른 속성을 설정하고, 성공적으로 생성된 후 구성을 표준 출력에 출력하는 방법을 보여줍니다.
- Linux:
$ kcreg.sh create -f client-template.json -s clientId=myclient -s baseUrl=/myclient -s 'redirectUris=["/myclient/*"]' -o
- Windows:
C:\> kcreg create -f client-template.json -s clientId=myclient -s baseUrl=/myclient -s "redirectUris=[\"/myclient/*\"]" -o
kcreg create 명령에 대한 자세한 내용은 kcreg create --help 를 실행합니다.
kcreg attrs 를 사용하여 사용 가능한 특성을 나열할 수 있습니다. 많은 구성 속성은 유효성 또는 일관성이 확인되지 않습니다. 적절한 값을 지정해야 합니다. 템플릿에 id 필드가 없어야 하며 kcreg create 명령에 대한 인수로 지정하지 않아야 합니다.
6.4.5. 클라이언트 구성 검색 링크 복사링크가 클립보드에 복사되었습니다!
kcreg get 명령을 사용하여 기존 클라이언트를 검색할 수 있습니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh get myclient
- Windows:
C:\> kcreg get myclient
웹 애플리케이션으로 패키지할 수 있는 어댑터 구성 파일로 클라이언트 구성을 검색할 수도 있습니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh get myclient -e install > keycloak.json
- Windows:
C:\> kcreg get myclient -e install > keycloak.json
kcreg get 명령에 대한 자세한 내용은 kcreg get --help 명령을 실행합니다.
6.4.6. 클라이언트 구성 수정 링크 복사링크가 클립보드에 복사되었습니다!
클라이언트 구성을 업데이트하는 방법은 두 가지가 있습니다.
한 가지 방법은 현재 구성을 가져와서 파일에 저장하고 편집한 후 서버에 완전히 새 상태를 다시 게시하는 것입니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh get myclient > myclient.json
$ vi myclient.json
$ kcreg.sh update myclient -f myclient.json
- Windows:
C:\> kcreg get myclient > myclient.json
C:\> notepad myclient.json
C:\> kcreg update myclient -f myclient.json
두 번째 방법은 현재 클라이언트를 가져오고, 필드를 설정하거나 삭제하고, 한 단계로 다시 게시합니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh update myclient -s enabled=false -d redirectUris
- Windows:
C:\> kcreg update myclient -s enabled=false -d redirectUris
또한 적용할 변경 사항만 포함하는 파일을 사용할 수 있으므로 너무 많은 값을 인수로 지정할 필요가 없습니다. 이 경우 --merge 를 지정하여 JSON 파일을 전체 새 구성으로 처리하는 대신 기존 구성에 적용할 속성 세트로 처리해야 합니다.
예를 들면 다음과 같습니다.
- Linux:
$ kcreg.sh update myclient --merge -d redirectUris -f mychanges.json
- Windows:
C:\> kcreg update myclient --merge -d redirectUris -f mychanges.json
kcreg update --help 명령을 실행하여 kcreg update 명령에 대한 자세한 내용을 확인합니다.
6.4.7. 클라이언트 구성 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제를 사용하여 클라이언트를 삭제합니다.
- Linux:
$ kcreg.sh delete myclient
- Windows:
C:\> kcreg delete myclient
kcreg delete 명령에 대한 자세한 내용은 kcreg delete --help 명령을 실행합니다.
6.4.8. 잘못된 등록 액세스 토큰 새로 고침 링크 복사링크가 클립보드에 복사되었습니다!
--no-config 모드를 사용하여 생성, 읽기, 업데이트 및 삭제(CRUD) 작업을 수행할 때 클라이언트 등록 CLI에서 등록 액세스 토큰을 처리할 수 없습니다. 이 경우 클라이언트의 가장 최근에 발행된 등록 액세스 토큰을 추적할 수 있으므로 관리 클라이언트 권한이 있는 계정으로 인증하지 않고 해당 클라이언트에서 추가 CRUD 작업을 수행할 수 없습니다.
권한이 있는 경우 클라이언트의 새 등록 액세스 토큰을 발행하여 표준 출력에 출력하거나 선택한 구성 파일에 저장할 수 있습니다. 그렇지 않으면 영역 관리자에게 클라이언트에 대한 새 등록 액세스 토큰을 발행하여 전송하도록 요청해야 합니다. 그런 다음 --token 옵션을 통해 모든 CRUD 명령에 전달할 수 있습니다. kcreg 구성 registration-token 명령을 사용하여 새 토큰을 구성 파일에 저장하고 해당 시점에서 클라이언트 등록 CLI에서 자동으로 처리할 수 있습니다.
kcreg update-token --help 명령에 대한 자세한 내용을 확인하려면 kcreg update-token --help 명령을 실행합니다.