1. 개요
우리는 사용할 수 Keycloak을 우리의 웹 또는 모바일 애플리케이션의 사용자를 관리하는 타사 인증 서버로.
관리자가 사용자를 추가하는 것이 가능하지만 Keycloak에는 사용자가 스스로 등록할 수 있는 기능도 있습니다. 또한 이름, 성 및 이메일과 같은 기본 속성과 함께 애플리케이션의 필요에 맞는 추가 사용자 속성을 추가할 수도 있습니다.
이 사용방법(예제)에서는 Keycloak에서 자체 등록을 활성화하고 사용자 등록 페이지에 사용자 정의 필드를 추가하는 방법을 살펴 봅니다.
우리는 로그인 페이지 사용자 정의 위에 구축 중이므로 초기 설정을 위해 먼저 살펴보는 것이 도움이 될 것입니다.
2. 독립형 서버
먼저 독립형 Keycloak 서버에 대한 사용자 자체 등록이 표시 됩니다.
2.1. 사용자 등록 활성화
처음에는 사용자 등록을 허용하기 위해 Keycloak을 활성화해야 합니다 . 이를 위해 먼저 Keycloak 배포판의 bin 폴더 에서 다음 명령을 실행하여 서버를 시작해야 합니다.
./standalone.sh -Djboss.socket.binding.port-offset=100
그런 다음 관리 콘솔 로 이동 하여 initial1 / zaq1!QAZ 자격 증명을 입력해야 합니다.
다음으로 Realm 설정 페이지 의 로그인 탭에서 사용자 등록 버튼을 토글 합니다.
그게 다야! 저장 을 클릭하기만 하면 자체 등록이 활성화됩니다.
이제 로그인 페이지 에 Register 라는 이름의 링크가 표시됩니다 .
다시 말하지만, 이전에 수행 한 사용자 정의를 확장하기 때문에 페이지가 Keycloak의 기본 로그인 페이지와 다르게 보입니다 .
등록 링크는 등록 페이지로 이동합니다.
보시다시피 기본 페이지에는 Keycloak 사용자의 기본 속성이 포함되어 있습니다 .
다음 섹션에서는 선택 항목에 추가 속성을 추가하는 방법을 살펴보겠습니다.
2.2. 사용자 정의 사용자 속성 추가
사용자 정의 테마를 계속 사용 하여 기존 템플릿 base/login/register.ftl 을 custom/login 폴더에 복사해 보겠습니다 .
이제 생년월일에 대한 새 필드 dob 를 추가하려고 합니다. 이를 위해 위의 register.ftl 을 수정 하고 다음을 추가해야 합니다.
<div class="form-group">
<div class="${properties.kcLabelWrapperClass!}">
<label for="user.attributes.dob" class="${properties.kcLabelClass!}">
Date of birth</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="date" class="${properties.kcInputClass!}"
id="user.attributes.dob" name="user.attributes.dob"
value="${(register.formData['user.attributes.dob']!'')}"/>
</div>
</div>
이제 이 페이지에서 새 사용자를 등록할 때 생년월일 도 입력할 수 있습니다 .
확인하기 위해 관리 콘솔 에서 사용자 페이지를 열고 Jane을 조회해 보겠습니다 .
다음으로 Jane 의 Attributes 로 이동 하여 DOB를 확인합니다 .
분명히 알 수 있듯이 여기에는 자체 등록 양식에 입력한 것과 동일한 생년월일이 표시됩니다.
3. 임베디드 서버
이제 Spring Boot 애플리케이션에 내장된 Keycloak 서버에 대한 자체 등록을 위한 사용자 정의 속성을 추가하는 방법을 살펴보겠습니다 .
독립 실행형 서버의 첫 번째 단계와 마찬가지로 처음에 사용자 등록을 활성화해야 합니다.
영역 정의 파일 baeldung-realm.json 에서 registrationAllowed 를 true 로 설정 하여 이를 수행할 수 있습니다 .
"registrationAllowed" : true,
그 후, 우리 는 생년월일 을 register.ftl 에 추가 해야 합니다 . 이전과 똑같은 방법 입니다.
다음으로 이 파일을 src/main/resources/themes/custom/login 디렉토리에 복사해 보겠습니다 .
이제 서버를 시작하면 로그인 페이지 에 등록 링크가 표시됩니다. 다음은 사용자 정의 필드 생년월일 이 있는 자체 등록 페이지입니다 .
내장 서버의 자체 등록 페이지를 통해 추가 된 사용자는 일시적 이라는 점을 염두에 두는 것이 중요합니다 .
이 사용자를 사전 구성 파일에 추가하지 않았기 때문에 서버를 다시 시작할 때 사용할 수 없습니다. 그러나 이것은 디자인과 기능만 확인하는 개발 단계에서 유용합니다.
테스트를 위해 서버를 다시 시작하기 전에 사용자가 관리 콘솔 에서 사용자 정의 속성 으로 DOB 와 함께 추가되었는지 확인할 수 있습니다 . 새 사용자의 자격 증명을 사용하여 로그인을 시도할 수도 있습니다.
4. 결론
이 예제에서는 Keycloak에서 사용자 자체 등록을 활성화하는 방법을 배웠습니다 . 또한 새 사용자로 등록하는 동안 사용자 정의 속성을 추가하는 방법도 보았습니다.
독립 실행형 인스턴스와 임베디드 인스턴스 모두에 대해 이 작업을 수행하는 방법에 대한 예제를 살펴보았습니다.
항상 그렇듯이 소스 코드는 GitHub에서 사용할 수 있습니다. 독립 실행형 서버의 경우 사용방법(예제) GitHub 에 있고 임베디드 인스턴스의 경우 OAuth GitHub 에 있습니다 .