본문 바로가기
관리자

Programming-[Backend]/Keycloak

Keycloak Password Hashing Algorithm: Bcrypt 방식 적용하기

728x90
반응형

기본으로 지원되는 비밀번호 해싱 알고리즘

argon2:: Argon2 (default for non-FIPS deployments)
pbkdf2-sha512:: PBKDF2 with SHA512 (default for FIPS deployments)
pbkdf2-sha256:: PBKDF2 with SHA256
pbkdf2:: PBKDF2 with SHA1 (deprecated)

 

설정하지 않으면, 기본적으로 Argon2 해시 알고리즘이 사용됨

default 알고리즘을 변경하여 사용하고 싶은 경우 하단의 명령어를 서버 시작시 입력 필요

-spi-password-hashing-provider-default=<algorithm>
<algorithm>에 들어갈 수 있는 알고리즘 리스트
argon2
pbkdf2-sha512
pbkdf2-sha256
pbkdf2 -> deprecated 이므로 사용하지 않는것을 권장

 


 

Realm단위로 Password Policy 적용 가능

 

다른 패스워드 정책과 마찬가지로, Realm단위로 Password Policy 적용 가능

기존 Realm의 Password Hashing Algorithm를 변경하고 싶은 경우

Authentication > Policies > Password policy 에서 변경 가능

 

 

Hashing Algorithm 을 문자열로 작성하면 적용, 기본적으로 제공하는 알고리즘을 사용하는 경우 정상 작동

기본적으로 제공하는 알고리즘이 아닌 다른 문자열 적용시 Provider를 찾을 수 없다는 알럿 표시

→ 다른 Hashing Algorithm을 적용하기 위해서는 SPI를 개발 해야함

 


 

다른 Hashing Algorithm 적용

키클락이 지원하는 해싱알고리즘이 아닌, 새로운 알고리즘을 사용하고 싶은 경우 SPI 개발이 필요

 

예시) keycloak-users-import/keycloak at master · ilyako87/keycloak-users-import

 

기존 프로젝트(torder-keycloak) 로컬 환경으로 테스트 → 완료

SPI 추가(하단 첨부한 SPI 참고)

  • Keycloak 으로 생성한 유저가 Bcrypt Password Algorithm을 사용하는지 확인 후 로그인

Password Hashing Algorithm을 Bcrypt로 변경유저 생성 후 로그인

 

  • 외부 사이트에서 생성한 Bcrypt Password로 유저 비밀번호 변경 후 로그인

Bcrypt-Generator.com - Online Bcrypt Hash Generator & Checker 비밀번호 생성
DB credential > secret_data 값 변경 로그인

 


 

User에 적용된 Password Hashing Algorithm

 

유저 별로 Password Hashing Algorithm정보가 저장됨

즉, 유저들은 다른 Password Algorithm을 가지고 있을 수 있다는 뜻

keycloak 실행시 설정한 default algorithm이 적용된 패스워드 해싱 알고리즘 정책을 채택하지만,

Realm 단위로 해싱 알고리즘을 설정한 하거나 해싱 알고리즘을 변경한 경우****

User가 생성된 시점 또는 User Password가 변경된 시점에 설정되어있는 해싱 알고리즘으로 설정되기 때문에 각 User별로 다른 알고리즘을 가질 수 있다.

  • UI : Users > Username > Credentials > Show data

  • Database : credential


통합인증 유저 마이그레이션

  • 기존 통합인증 Password Hashing Algorithm: bcrypt
728x90
반응형