MSA 암호화 관련 질문
- 작성자 :
- y****e
- 작성일 :
- 2025-04-21 17:32:44
- 조회수 :
- 43
- 구분 :
- 공통컴포넌트 / 4.3
- 진행상태 :
- 완료
Q
egovframe-common-components-msa-krds 레포지토리에서 EgovLogin 부분 질문드립니다.
EgovJwtProvider 에서
public String encrypt(String s) {
return egovEnvCryptoService.encrypt(s);
}
부분으로 암호화 하고 있는것 같은데요. 이부분 yml 에서
org:
egovframe:
crypto:
algorithm: SHA-256
algorithmKey: egovframe
algorithmKeyHash: gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ=
로 설정해주고 있는것으로 보여서 제가 임의의 key, hash 값 발급해서 적용했습니다.
근데 jwt 토큰 생성시하는 메서드를 보면
ClaimsBuilder builder = Jwts.claims()
.subject("Token")
.add("userId", ObjectUtils.isEmpty(loginVO.getUserId()) ? "" : encrypt(loginVO.getUserId()))
.add("userNm", ObjectUtils.isEmpty(loginVO.getName()) ? "" : encrypt(loginVO.getName()))
.add("uniqId", ObjectUtils.isEmpty(loginVO.getUniqId()) ? "" : encrypt(loginVO.getUniqId()))
.add("authLs", ObjectUtils.isEmpty(loginVO.getAuthorList()) ? "" : encrypt(loginVO.getAuthorList()))
.issuedAt(new Date(System.currentTimeMillis()))
.expiration(new Date(System.currentTimeMillis() + Long.parseLong(expiration)));
로 userId등 필요한 속성도 암호화해주는것으로 이해했는데
해당 내부 코드 보니까 EgovPasswordEncoder 로 패스워드 체크를 하던데 저 userId랑 hash값이랑 비교를 하는것 같더라구요 그래서 계속 notMatched가 발생합니다.
디버깅해보니 yml에서의 keyHash값과 userId가 일치하지 않아서 암호화가 제대로 동작을 안하는것 같던데 제가 설정을 따로 해야하는 부분이 또 있나요?
EgovJwtProvider 에서
public String encrypt(String s) {
return egovEnvCryptoService.encrypt(s);
}
부분으로 암호화 하고 있는것 같은데요. 이부분 yml 에서
org:
egovframe:
crypto:
algorithm: SHA-256
algorithmKey: egovframe
algorithmKeyHash: gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ=
로 설정해주고 있는것으로 보여서 제가 임의의 key, hash 값 발급해서 적용했습니다.
근데 jwt 토큰 생성시하는 메서드를 보면
ClaimsBuilder builder = Jwts.claims()
.subject("Token")
.add("userId", ObjectUtils.isEmpty(loginVO.getUserId()) ? "" : encrypt(loginVO.getUserId()))
.add("userNm", ObjectUtils.isEmpty(loginVO.getName()) ? "" : encrypt(loginVO.getName()))
.add("uniqId", ObjectUtils.isEmpty(loginVO.getUniqId()) ? "" : encrypt(loginVO.getUniqId()))
.add("authLs", ObjectUtils.isEmpty(loginVO.getAuthorList()) ? "" : encrypt(loginVO.getAuthorList()))
.issuedAt(new Date(System.currentTimeMillis()))
.expiration(new Date(System.currentTimeMillis() + Long.parseLong(expiration)));
로 userId등 필요한 속성도 암호화해주는것으로 이해했는데
해당 내부 코드 보니까 EgovPasswordEncoder 로 패스워드 체크를 하던데 저 userId랑 hash값이랑 비교를 하는것 같더라구요 그래서 계속 notMatched가 발생합니다.
디버깅해보니 yml에서의 keyHash값과 userId가 일치하지 않아서 암호화가 제대로 동작을 안하는것 같던데 제가 설정을 따로 해야하는 부분이 또 있나요?
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
문의하신 암호화 부분은
Crypto 간소화를 이용하여 문자열을 암호화하는 로직입니다.
Crypto 간소화 설정 이외에 설정은 필요하지 않으며
암호화에 필요한 클래스는 EgovJwtProvider 설정에
포함되어 있으므로 참고하시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
문의하신 암호화 부분은
Crypto 간소화를 이용하여 문자열을 암호화하는 로직입니다.
Crypto 간소화 설정 이외에 설정은 필요하지 않으며
암호화에 필요한 클래스는 EgovJwtProvider 설정에
포함되어 있으므로 참고하시기 바랍니다.
감사합니다.