Spring Security 개인인증 관련 재질문입니다.
- 작성자 :
- 임*화
- 작성일 :
- 2019-08-06 15:18:38
- 조회수 :
- 2,369
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
현재 전자정부프레임워크 3.1을 사용중에 있습니다.
설명대로 Spring Security 개인인증관련 아래와 같이 환경설정 했습니다.
<authentication-manager>
<authentication-provider user-service-ref="jdbcUserService">
<password-encoder hash="sha-256" base64="true"/>
</authentication-provider>
</authentication-manager>
그리고 먼저 질문에서도 물었듯이 사용자 암호는 어떻게 암호화해야 제대로 작동을하는지 물었습니다.
그랬더니 "470. 일반회원관리" 메뉴에서 회원정보 수정시 참고하라고 하셔서 공통컴포넌트 다운받아서 확인을 해보니
암호화는 별도로 전자정부 프레임워크 공통 Util 로 되어 있지는 않은것 같아서..
아래와 같이 공통컴포넌트 예제의 egovframework.com.utl.sim.service.EgovFileScrty.encryptPassword() 와 같이
메소드를 하나 추가해서 사용자 비밀번호를 구해서 DB에 입력했습니다.
그런데, 로그인을 하면 비밀번호가 일치 않는다고 나오고 있습니다.
암호화 부분을 제거하면 정상적으로 로그인이 되고 있기 때문에, 말씀하신대로 회원가입시 비밀번호를 아래와 같이 암호화 한것이랑
Spring Security에서 <password-encoder hash="sha-256" base64="true"/> 설정한 암호화가 다른것 같습니다.
어떻게 암호화를 맞춰야 하나요??
public static String encryptPassword(String password, String id) throws Exception {
if (password == null) return "";
if (id == null) return ""; // KISA 보안약점 조치 (2018-12-11, 신용호)
byte[] hashValue = null; // 해쉬값
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.reset();
md.update(id.getBytes());
hashValue = md.digest(password.getBytes());
return new String(Base64.encodeBase64(hashValue));
}
설명대로 Spring Security 개인인증관련 아래와 같이 환경설정 했습니다.
<authentication-manager>
<authentication-provider user-service-ref="jdbcUserService">
<password-encoder hash="sha-256" base64="true"/>
</authentication-provider>
</authentication-manager>
그리고 먼저 질문에서도 물었듯이 사용자 암호는 어떻게 암호화해야 제대로 작동을하는지 물었습니다.
그랬더니 "470. 일반회원관리" 메뉴에서 회원정보 수정시 참고하라고 하셔서 공통컴포넌트 다운받아서 확인을 해보니
암호화는 별도로 전자정부 프레임워크 공통 Util 로 되어 있지는 않은것 같아서..
아래와 같이 공통컴포넌트 예제의 egovframework.com.utl.sim.service.EgovFileScrty.encryptPassword() 와 같이
메소드를 하나 추가해서 사용자 비밀번호를 구해서 DB에 입력했습니다.
그런데, 로그인을 하면 비밀번호가 일치 않는다고 나오고 있습니다.
암호화 부분을 제거하면 정상적으로 로그인이 되고 있기 때문에, 말씀하신대로 회원가입시 비밀번호를 아래와 같이 암호화 한것이랑
Spring Security에서 <password-encoder hash="sha-256" base64="true"/> 설정한 암호화가 다른것 같습니다.
어떻게 암호화를 맞춰야 하나요??
public static String encryptPassword(String password, String id) throws Exception {
if (password == null) return "";
if (id == null) return ""; // KISA 보안약점 조치 (2018-12-11, 신용호)
byte[] hashValue = null; // 해쉬값
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.reset();
md.update(id.getBytes());
hashValue = md.digest(password.getBytes());
return new String(Base64.encodeBase64(hashValue));
}
A
안녕하세요.
표준프레임워크센터 입니다.
표준프레임워크에서
해당 부분은 시큐리티 간소화로 가이드 해드리고 있습니다.
<authentication-manager>를 설정하시는 걸로 보아서
스프링 시큐리티로 커스텀 하시는 경우는
다양한 경우의 수와 변수등이 있을수 있어
센터에서 가이드 해드리기 어렵습니다.
기재하신 내용으로 보아 SHA-256 단방향 암호화 처리시
패스워드 인증에 애로사항이 있으신듯 합니다.
참고로
시큐리티 간소화에서는 SHA-256에 솔트값이 추가로 들어가서
차이가 발생할수 있습니다.
표준프레임워크에서 제공하는
시큐리티 간소화는
공통기반 > Server Security 부분을 참고하실수 있습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea3.8
감사합니다.
표준프레임워크센터 입니다.
표준프레임워크에서
해당 부분은 시큐리티 간소화로 가이드 해드리고 있습니다.
<authentication-manager>를 설정하시는 걸로 보아서
스프링 시큐리티로 커스텀 하시는 경우는
다양한 경우의 수와 변수등이 있을수 있어
센터에서 가이드 해드리기 어렵습니다.
기재하신 내용으로 보아 SHA-256 단방향 암호화 처리시
패스워드 인증에 애로사항이 있으신듯 합니다.
참고로
시큐리티 간소화에서는 SHA-256에 솔트값이 추가로 들어가서
차이가 발생할수 있습니다.
표준프레임워크에서 제공하는
시큐리티 간소화는
공통기반 > Server Security 부분을 참고하실수 있습니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea3.8
감사합니다.