비밀번호 암호화와 security를 적용시
- 작성자 :
- 김*호
- 작성일 :
- 2010-08-10 10:37:17
- 조회수 :
- 3,663
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
지금 security 부분을 약간 수정하여 적용한 상태인데.
이용자 패스워드를 ARIA알고리즘을 적용한 상태인데요.
로그인할때 decrypt 메소드를 어느 시점에 어떻게 적용해야 되는지..
loadUserByUsername를 오버라이드 해서 EgovUserDetails를 리턴할때 패스워드에 디코딩 해서 넘겨주면 되나요?
아니면 시큐리티에서 설정하는 방법이 있는지요?
<암호화부분>
cryptoAriaTxt.setComformStr("xxx");
cryptoAriaTxt.setConfig(-1, pwd);
try{
byte ret_encryt[] = cryptoAriaTxt.encrypt();
String strEncryt = Base64.encode(ret_encryt);
vo.setLibPw(strEncryt);
}catch(Exception e){
e.printStackTrace();
}
<복호화부분>
String pwd = this.userDetails.getPassword();
byte aa[] = Base64.decodeBase64(pwd.getBytes());
try {
cryptoAriaTxt1.getComformStr("xxx");
cryptoAriaTxt1.setARIAConfig(-1, aa);
} catch (UnsupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte ret_decrypt[] = cryptoAriaTxt1.decrypt();
String aaStr = new String(ret_decrypt);
그리고 EgovARIAEDcryptionTxtServiceImpl의 encrypt() 메소드에 else문으로 System.exit(0)을 호출해서 was를 내려버리는데.. 다른 시스템과 같이 돌아갈때 문제가 될것같은데요..
이용자 패스워드를 ARIA알고리즘을 적용한 상태인데요.
로그인할때 decrypt 메소드를 어느 시점에 어떻게 적용해야 되는지..
loadUserByUsername를 오버라이드 해서 EgovUserDetails를 리턴할때 패스워드에 디코딩 해서 넘겨주면 되나요?
아니면 시큐리티에서 설정하는 방법이 있는지요?
<암호화부분>
cryptoAriaTxt.setComformStr("xxx");
cryptoAriaTxt.setConfig(-1, pwd);
try{
byte ret_encryt[] = cryptoAriaTxt.encrypt();
String strEncryt = Base64.encode(ret_encryt);
vo.setLibPw(strEncryt);
}catch(Exception e){
e.printStackTrace();
}
<복호화부분>
String pwd = this.userDetails.getPassword();
byte aa[] = Base64.decodeBase64(pwd.getBytes());
try {
cryptoAriaTxt1.getComformStr("xxx");
cryptoAriaTxt1.setARIAConfig(-1, aa);
} catch (UnsupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte ret_decrypt[] = cryptoAriaTxt1.decrypt();
String aaStr = new String(ret_decrypt);
그리고 EgovARIAEDcryptionTxtServiceImpl의 encrypt() 메소드에 else문으로 System.exit(0)을 호출해서 was를 내려버리는데.. 다른 시스템과 같이 돌아갈때 문제가 될것같은데요..
A
안녕하세요. 김준호님.
Spring Security 적용시 올려주신 내용대로 패스워드를 디코딩 해서 넣겨주시면 됩니다.
이때 authentication-provider 의 패스워드 인코딩을 설정하지 않아야 합니다.
또한 encrypt() 메서드에서 암호가 틀렸을 경우 System.exit(0) 메소드를 호출하여 암호화 모듈 사용시 비밀번호의 확인절차가 올바르지 않을 경우 시스템을 정상종료 시키는 것으로 되어 있습니다.
이 경우 말씀 하신바와 같이 다른 시스템에 영향을 미칠 수 있으므로 비밀번호 설정에 주의 하셔야 하며 방지를 위해서 실행환경소스를 다운받으셔서 수정하여 사용하시기 바랍니다.
위 사항에 대하여는 내부 검토 후 조치하도록 하겠습니다.
즐거운 하루되세요. 감사합니다.
Spring Security 적용시 올려주신 내용대로 패스워드를 디코딩 해서 넣겨주시면 됩니다.
이때 authentication-provider 의 패스워드 인코딩을 설정하지 않아야 합니다.
또한 encrypt() 메서드에서 암호가 틀렸을 경우 System.exit(0) 메소드를 호출하여 암호화 모듈 사용시 비밀번호의 확인절차가 올바르지 않을 경우 시스템을 정상종료 시키는 것으로 되어 있습니다.
이 경우 말씀 하신바와 같이 다른 시스템에 영향을 미칠 수 있으므로 비밀번호 설정에 주의 하셔야 하며 방지를 위해서 실행환경소스를 다운받으셔서 수정하여 사용하시기 바랍니다.
위 사항에 대하여는 내부 검토 후 조치하도록 하겠습니다.
즐거운 하루되세요. 감사합니다.