Thingworx는 User Management Subsystem을 통해 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다.
Thingworx는 로그인 시도 시 입력한 문자열을 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 저장된 사용자 비밀번호 정보 및 User Management Subsystem에서 설정한 옵션을 통해 암호화 하여 해당 결과가 저장된 비밀번호 정보와 일치하는지 판단합니다.
이를 이용하여 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블의 유저 정보를 이미 알고있는 비밀번호 암호화 결과와 옵션들로 Update 하여 비밀번호를 리셋할 수 있습니다.
Thingworx 암호화 방식 및 옵션에 대한 이해 #
Thingworx 암호화 방식의 대한 이해를 돕기위한 포스팅입니다.
Thingworx 비밀번호 초기화를 위한 테이블 변경/확인 필요 내용 #
비밀번호 Reset은 이미 알고있는 특정 문자열(비밀번호로 사용할)의 암호화 결과로 덮어쓰기 하는 방식으로 진행됩니다.
아래의 정보는 PBKDF2WithHmacSHA512 해싱 알고리즘으로 Iteration 100000, Salt size in bytes 64, Hash size in bytes 64 옵션을 준 admin
문자열의 암호화 결과로 유저 정보를 덮어쓰기위한 정보입니다.
-
passwordHash :
100000:ecbad5a6dc172f92cddd4743e6b4877724e0c675e6e2fc1c780ab62a2350f115acdbd3c6c582afd297a4c77fb5420520e3f36c2c5e12dbfc5fc9c4f3fc2d616d:6fd6785de35b500fb633ab13be4207dead6c26f922b32610c135f446fea2d4abbce57be9058457cddd4e3944fcf42b804c29dc8939a3c29ca6ac64001d0a982c
-
passwordHashIterationCount : 100000
-
passwordHashAlgorithm : PBKDF2WithHmacSHA512
-
passwordHashSaltSizeInBytes : 64
-
passwordHashSizeInBytes : 64
위의 내용들이 세팅된 상태이면 Administrator 의 비밀번호가 admin
으로 변경됩니다.
아래는 위의 내용을 세팅하는 각각의 쿼리입니다.
passwordHash 세팅 쿼리 #
UPDATE user_model SET "passwordHash" = '100000:ecbad5a6dc172f92cddd4743e6b4877724e0c675e6e2fc1c780ab62a2350f115acdbd3c6c582afd297a4c77fb5420520e3f36c2c5e12dbfc5fc9c4f3fc2d616d:6fd6785de35b500fb633ab13be4207dead6c26f922b32610c135f446fea2d4abbce57be9058457cddd4e3944fcf42b804c29dc8939a3c29ca6ac64001d0a982c' WHERE name = 'Administrator';
passwordHashIterationCount 세팅 쿼리 #
UPDATE user_model SET "passwordHashAlgorithm" = 'PBKDF2WithHmacSHA512' WHERE name = 'Administrator';
passwordHashAlgorithm 세팅 쿼리 #
UPDATE user_model SET "passwordHashIterationCount" = 100000 WHERE name = 'Administrator';
passwordHashSaltSizeInBytes 세팅 쿼리 #
UPDATE user_model SET "passwordHashSaltSizeInBytes" = 64 WHERE name = 'Administrator';
passwordHashSizeInBytes 세팅 쿼리 #
UPDATE user_model SET "passwordHashSizeInBytes" = 64 WHERE name = 'Administrator';