TIL(Today I Learned)
TLI 49일 (23. 7. 20. 목)
seed0335
2023. 7. 20. 21:30
1. 오늘 배운 내용
열심히 스프링 시큐리티를 배우고 있습니다.
잘 설명된 좋은 자료가 없어서 어려웠는데,
막상 구조를 보니, 굉장히 잘 설계되었있는 시스템이어서, 흥미있게 배우고 있습니다.
그림으로 보면 이해가 잘 되는데, 저작권이 있어서 못 올리는 게 아쉽네요.
- 사용자의 요청이 filter를 거쳐서 10개 이상의 필터를 거치는데,
- 그중 중요한 것은
- AuthorizationFilter
- 기본 페이지를 보여주는 필터
- 유저 네임과 패스워드 인증하는 필터가 있습니다. (. UsernamePassowrdAuthenticationFilter)
- 여기서 인증 정보를
- AuthenticationManager로 보냅니다. 구현체는 ProviderManager입니다.
- 그러면 매니저에서 위에 인증을 처리할 수 있는 AuthenticationProvider 인터페이스에서
- 맞는 구현체를 목록에서 찾습니다.
- 위에 경우에는 DaoProvidermanger입니다. (여기서 결국 유저가 입력한 비밀번호와 저장된 비밀번호를 비교합니다.)
- 그러면 여기서, loadUserByUsername() 이라는 메서드로 유저네임으로,
- 사용자가 설명한 DB 또는 메모리 기타등등의 곳에서(개발자가 정한 곳) username 정보로 값을 찾습니다.
- 그다음 UserDatils로 반환합니다.
- 8번에서 암호 비교 후 거꾸로 값이 전달됩니다. 메서드니까요.
- 실제로 내부 구현은 인터페이스와 여러 구현체로 되어있는 단순한 구조입니다. 물론, 구현체를 설계한 코드가 복잡할 수 있지만, 실제 기능은 단순합니다. 가져오고, 비밀번호 같으면 통과 아니면 거부입니다. 그러니까 어려워 할 필요없다.
- 더 자세한 설명은 유데미에 스프링 시큐리티 강의를 보면 됩니다. 할인하면 15000원 밖에 안하는데, 내용은 엄청납니다. (단점은 영어라는 것, 근데 맨날 보는 코드가 다 영어잖아요 ㅎㅎ, 새삼스럽게 두려워할 필요없다. ㅎㅎ )
- 그중 중요한 것은