ICT Intern/Spring Security 7

[Spring] Spring Security 에러 페이지 커스터마이징

에러 페이지 커스터마이징하기 Spring으로 웹 페이지를 만들다 보면 White Label Error 페이지를 정말 많이 보게 된다..! 하지만 이러한 에러 페이지가 사용자에게 그대로 보여지는 것은 좋지 않다. 따라서 이 페이지를 커스터마이징 할 것이다. 복잡할 줄 알았는데 생각보다 간단했다. 1. 404 Error 커스터마이징하기 2. 관리자 페이지 Error 커스터마이징하기 일반 사용자 권한으로 관리자만 들어갈 수 있는 /admin/setting 페이지에 접근했을 때 위와 같이 Error 페이지가 출력된다. SecurityConfig의 configure에 다음과 같이 한 줄만 추가해주면 된다. 그리고, access.jsp파일을 생성해서 일반 사용자가 접근 시 보여줄 에러 페이지를 작성하면 끝! .ex..

[Spring] Spring Security 메세지 커스터마이징

에러 메세지 커스터마이징하기 비밀번호를 틀렸을 시에, View에서 SPRING_SECURITY_LAST_EXCEPTION.message로 찍어보면 Bad credentials라는 에러 메세지가 발생되는 것을 알 수있다. 이 메세지는 아래와 같이 properties에 이미 정의되어 있다. 이 때 영어로 에러 메세지가 출력된다면 사용자가 어떤 문제인지 파악하기 어렵다. 따라서 이 메세지를 커스터마이징하여 사용자에게 알려주는 페이지를 작성하였다. 이 부분은 dependency 폴더를 보면 아래와 같이 메세지를 확인할 수 있고, 이를 수정하여 에러 메세지를 커스터마이징할 수 있다. [참고한 곳] https://blog.naver.com/aaaa-bc/221489001810 https://to-dy.tistory..

[Spring] Spring Security 기본 개념 정리

[참고] 초보자가 이해하는 Spring Security https://postitforhooney.tistory.com/entry/SpringSecurity-%EC%B4%88%EB%B3%B4%EC%9E%90%EA%B0%80-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-Spring-Security-%ED%8D%BC%EC%98%B4 * 스프링 시큐리티가 애플리케이션 보안을 구성하는 두가지 영역 - 인증(Authentication) 애플리케이션의 작업을 수행할 수 있는 주체(사용자)인 것 - 권한(Authorization) 인증된 주체가 애플리케이션의 동작을 수행할 수 있도록 허락되있는지를 결정하는 것 => 권한 승인이 필요한 부분으로 접근하려면 인증 과정을 통해 주체가 증명 되어야만 한..

[Spring] Thymeleaf 알아보기

Thymeleaf 사용하는 이유는? 텍스트, HTML, XML, Javascript, CSS를 생성할 수 있는 템플릿 엔진 순수 HTML로 템플릿 작성 가능 Spring Boot에서 사용 권장 (Spring Boot에서는 JSP를 추천하지 않는다.) * Gradle 추가한 후 사용한다. compile 'org.springframework.boot:spring-boot-starter-thymeleaf' * 기존 JSP와 다른 점은? JSP: Thymeleaf: 프론트엔드와 백엔드의 독립된 개발은 필수적이다. jsp(jstl, el)를 사용하였을 때 만약 서버에서 처리해주지 않는다면 해당 태그가 제대로 표시되지 않는다. 반면 thymeleaf를 사용 할 경우 th: 로 시작하는 부분이 처리되지 않더라도 완벽..

[Spring] Spring Security 로그인 커스터마이징

Spring Security 커스터마이징하기 스프링 시큐리티에서 기본으로 제공하는 것들은 정말 기본만 제공하기 때문에 커스터마이징이 거의 필수적이다. 그래서 아래와 같이 커스터마이징 해보려고 한다. 1. 로그인 화면 2. 회원 가입 3. 에러 메세지 4. 접근 권한 에러 페이지 5. 패스워드 암호화 6. 로그인 횟수 초과 시 계정 잠금 7. Remember-Me로 정보 저장 8. 관리자 접근 페이지 Spring Security를 처음 접해보았는데 엄청난 삽질 중이다.. 기본적으로 제공하는 로그인 틀을 사용하기에는 너무 별로고 여기저기 참고하고 싶어서 찾아봤는데 블로그마다 방법이 다 달라서 왜그런가 했더니 커스터마이징 때문이었다. 그래서 그냥 여러군데 참고하면서 에러뜨면 고치고, 하고싶은 대로 구현했다. ..

[Spring] Spring Security 암호화

org.springframework.security.crypto.factory.PasswordEncoderFactories 를 import해서 비밀번호를 암호화 한 후 데이터베이스에 저장하려 했는데 계속 import할 수 없다는 오류가 발생했다. 스프링 시큐리티 버전이 올라가면서 기능이 변경되었다고 한다. 새로운 버전의 기능은 아래와 같다. 따라서 비밀번호 암호화 시 BCryptPasswordEncoder를 사용하여 구현했다. - OAuth 2.0 Login - Reactive 지원 - @EnableWebFluxSecurity - @EnableReactiveMethodSecurity - WebFlux Testing Support - 현대화된 비밀번호 인코딩 [공식 문서] https://docs.sprin..

[Spring] Spring Security - Config 알아보기

SecurityConfig.java @Configuration 스프링 시큐리티에 관련된 기본적인 사항들(인증필터 등)이 설정된다. @EnableWebSecurity WebSecurityConfigurerAdapter를 상속하면 이미 설정된 기본값에 추가값을 오버라이드해 설정할 수 있다. //특정 요청에 대해서는 시큐리티 설정을 무시하도록 하는 등 전체에 관한 설정을 한다 @Override public void configure(WebSecurity web) throws Exception { //static files //webjars, resources와 같은 정적 저장소에 접근하면 시큐리티 설정을 무시하도록 한다 . web.ignoring().antMatchers("/resources/**","/web..