Spring-diary
-
Spring Security+MyBatis로 Spring 게시판 만들기 3Spring-diary/WEB 2020. 3. 1. 14:35
Dao 설정 Controller 설정 Service 설정 DTO 설정 View 설정 Dao 설정 DTO 설정 Service 설정 Controller에서 DAO에 직접 접근하지 않고 Service를 통해 접근한다. -DAO가 한개인 경우는 상관없지만 여러개가 되는 경우 필요하다.- 게시판 Controller 설정 service를 통해 DB에 요청한다. Spring-security 설정 View 설정 JSTL,EL,csrf_tokken을 이용해 데이터를 표현한다. *나머지 기능들도 jstl과 el ,csrf_tokken을 사용한다. csrf_tokken의 경우 삭제 요청,수정요청,로그인,글쓰기 등록 등에 사용되는데 서버에 정보를 보낼 때 Post 방식을 보내줘야한다.
-
Spring rootContext와 ServletContextSpring-diary/WEB 2020. 3. 1. 13:24
Spring은 계층구조를 가지는 Multi Context 환경을 구성할 수 있도록 해준다. Context에 대한 설정은 크게 Root Context와 Servlet Context로 나뉜다. ServletContext web application의 client 요청을 받기 위한 entry point로써 서블릿의 context 설정이다. context 설정에는 요청에 대한 처리를 해줄 controller의 매핑설정과 요청 처리후 view 처리에 대한 view resolver 설정등이 존재하게 된다. rootContext web application의 실제 비즈니스 혹은 service layer와 DB에 연결되는 repository layer을 구성하는 bean들에 대한 설정을 하게 된다. rootContex..
-
[Spring Security][DB]CSRFSpring-diary/WEB 2020. 2. 25. 22:46
정의 Cross site request forger의 약자 웹 사이트의 취약점을 이용하여 이용자가 의도하지 않은 요청을 통한 공격을 의미 http 통신의 Stateless 특성을 이용해 쿠키 정보만으로 공격할 수 있다. 해결책 CSRF Token 정보를 Header 정보에 포함하여 서버 요청을 시도 Spring security로 해당 설정을 편리하게 할 수 있음. *기본 process Spring Security의 CSRF protection은 Http 세션과 동일한 생명 주기를 가지는 토큰을 발행한 후 Http 요청-Patch,Post,Put,Delete 메소드-마다 발행된 토큰이 요청에 포함-Http헤더 또는 Parameter-되어 있는지 검사하는 방식으로 되어있다. *쿠키를 사용해 검증하는 방식 S..
-
[Spring Security][DB][암호화] 비밀번호 암호화하기Spring-diary/WEB 2020. 2. 25. 10:52
PasswordEncoder password를 암호화하기 위한 interface이다. 날 것 그대로 사용하지 않고 보통 BCryptPasswordEncoder를 사용한다. 절차 PasswordEncoder interface를 구현할 클래스를 만든다. Password를 encoding하는 method와 encoding된 Password와 입려한 Password가 일치하는지 확인하는 Method를 Override해준다. security xml파일에서 bean을 만들어준다. 비밀번호 검증 방식으로 방금 등록한 passwordEncoder를 설정한다. BCryptPasswordEncoder 비밀번호를 DB에 들어가는 데이터 조차 암호화하기 위해 BCryptPasswordEncoder 를 사용한다. Passwor..
-
[Spring Security][DB][권한부여] <security:jdbc-user-service>Spring-diary/WEB 2020. 2. 25. 10:40
data Source에 로그인을 위한 sql문 설정을 해두어서 사용한다. 기존의 JdbcUserDetailsManager를 사용하게 되면 테이블 이름이 고정되지만 이 태그를 사용하게 되면 테이블의 이름을 임의로 정하고, sql문도 좀더 유동적으로 작성해 인증절차를 진행할 수 있다. data-source-ref DB 정보를 가지고 온다. users-by-username-query username에 따라 판단 하도록 sql문을 설정한다. authorities-by-username-query 해당 username에 어떤 권한이 있는지 여부를 판단하는데 필요한 sql문을 설정한다.
-
[Spring Security][DB] DB와 연동해 로그인 하기Spring-diary/WEB 2020. 2. 25. 10:00
방법(기존 Spring-security 설정에서) 서비스를 상용화 하기 위해서 Authentication(인증)부분을 DB로 이전해야 한다. 권한(Authority)과 세부정보(UserDetails)들을 모두 DB에 기록한다. -JdbcUserDetailsManager 클래스에 내장된 SQL문에 맞게 열의 이름과 Table명을 작성해 주어야 한다. *JdbcUserDetailsManager -데이터를 조회하고 업데이트하는 쿼리가 내장되어 있다. 새 user를 만들고 기존 user를 업데이트 할 수 있는 메소드를 가진 UserDetailsManager의 구현체이다. Spring Security에서는 정보들을 쿼리를 이용해 가져온다.