이 강의에서는
Spring Security 안의 해싱과
PasswordEncoder들을
활용하려고 할 때마다 로그인 작업이
어떻게 이루어지는지 이해해보겠습니다
우리가 해싱을 이해하고자 했던 앞선 강의와
아주 일맥상통한 내용입니다
해싱은 굉장히 복잡한 주제이기 때문에
여러분이 해싱이 어떻게 작동하는지
확실히 이해했다는 것을
확인하기 위해
한 번 더 이야기 하겠습니다
여기 슬라이드를 보시면
첫 번재 작업에서
유저는 본인의 자격 증명을 입력했는데
Admin 그리고 12345입니다
배경에서 Spring Security는
PasswordEncoder들 중 하나를 활용합니다
PasswordEncoder는 추후 강의에서 다룰 예정입니다
이 PasswordEncoder의 도움을 받아
Spring Security는 엔드 유저가 입력한
비밀번호를 해싱 시도합니다
먼저 이 해시 비밀번호가
F32C로 시작해 ADV로
끝난다고 해보겠습니다
그래서 이 비밀번호의
해시 문자열은 이렇게 보입니다
이 해싱이 완료되면
배경에서 Spring Security는
엔드 유저의
등록 절차에서 생성된 기존 해시값을
데이터베이스에서 불러옵니다
그리고 이 해시값을
UserDetailsObject에 보유합니다
우리가 데이터베이스에서 불러온
해시 문자열은 G22H 시작해서
BEF로 끝나는 모습입니다
우리가 데이터베이스에서
불러오면 해시 문자열은 이렇게 보입니다
두 개의 해시 문자열을 보면
굉장히 다른데
해시값은 동일합니다
그리고 해시값이 동일하다면
로그인 작업이 성공적일 것이고
그렇지 않으면 로그인에 실패합니다
저의 PasswordEncoder는
이 해시 문자열들을 매칭하고
이들의 해시값을 찾는 것
해시값의 일치 여부 등 모든 것을 처리할 겁니다
이 모든 작업에서 데이터베이스 내부에
일반 텍스트 비밀번호를 한 번도
저장하지 않음을 볼 수 있습니다
동시에 비밀번호를 비교할 때도
일반 텍스트 비밀번호 형태로 비교하지 않습니다
모든 것은 해시 문자열 형태로 처리됩니다
이 해싱 표준은 비밀번호 관리와 관련해
많은 이점을 가져오는데
엄청나게 안전하고 비가역적이기 때문입니다
이로써 우리에게 있는 여러분의 비밀번호는 안전하다는
기밀성과 무결성을 엔드 유저들에게 보장할 수 있으며
우리는 비밀번호에 대한
걱정 없이 편안히 잠들 수 있습니다
이로써 해싱이 어떻게 작동하는지
여러분이 아주 확실히 이해했다고 생각합니다
지금 여러분이 가질만한 유일한 의문은
PasswordEncoder들이 이런 해싱 표준을
우리의 Spring Security 웹 애플리케이션에
구현하는 데에 어떤 도움이 될 것인가입니다
이것은 다음 강의에서 다루겠습니다
감사드리며 다음 강의에서 뵙겠습니다 수고하셨습니다