사이버수사대2
524
2018-05-02 12:30:29
4
935

스프링 시큐리티 질문입니다.


로그인Form을 submit 할 시에 스프링시큐리티의 AuthenticationProvider 인터페이스를 구현한

authenticate 메소드를 아래와같이 타게되는데요.

@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
	
	@Autowired
	CustomUserDetailsServiceImpl userService;
	
	@Override
	public Authentication authenticate(Authentication authentication) throws AuthenticationException {
		String username = authentication.getName(); 
		String password = (String) authentication.getCredentials();
		
		Member member = userService.loadUserByUsername(username);
		
		if (member == null) {
			throw new BadCredentialsException("There is no User Info.");
		}
		if (!member.getPassword().equals(password)) {
			throw new BadCredentialsException("Password does not match. Please verify correct password.");
		}
		
		Collection<? extends GrantedAuthority> authorities = member.getAuthorities();
		
		return new UsernamePasswordAuthenticationToken(member, password, authorities);
		
	}

	@Override
	public boolean supports(Class<?> authentication) {
		return  authentication.equals(UsernamePasswordAuthenticationToken.class);
	}
}

위 메소드에서 세션에 들어있는 개인키를 가져와서 password를 복호화해야되는데

위 메소드는 세션을 가져올수가 없네요..

혹시 방법이 없을까요? ( mvc interceptor preHandle은 위 메소드 이후에 호출되어 불가능..)


0
  • 답변 4

  • 빵상
    2018-05-02 12:35:48

    암호 복호화를 어디에 사용하시려고 하시나요??

  • 사이버수사대2
    524
    2018-05-02 12:47:28

    //빵상

    login폼에서 submit 일어날 시 평문으로 전송된다해서 보안조치를 해야되는데요.

    자바에서 공개키를 login폼으로 넘겨주고 이를 암호화한 후에

     submit 하고 java단에서 다시 복호화 해야되는데

    복호화해줄 개인키를 session에 담아서 들고와야하는데

    authenticate 메소드에서는 session을 못불러오는.....문제가 있습니다..

  • hyperion
    537
    2018-05-02 12:52:50

    비밀번호 같은 개인정보는 복호화 가능한 암호를 사용하면 안 됩니다.

    BCrypt 같은 단방향 암호화로 바꾸세요.

    시큐리티에서 사용하는 것도 간단합니다.

    http://zgundam.tistory.com/54

  • ktsedd
    6k
    2018-05-02 13:19:07

    시큐리티에서 해당기능이있어요~

  • 로그인을 하시면 답변 을 등록할 수 있습니다.