Spring Security
- spring security는 filter에 의해 구현됨(오고가는 request response를 가로채서 필터에서 거르는식으로 구현됨)
1) filter패키지 및 filter 추가
2) 관련 라이브러리 추가
- config, web, core
3) web.xml에 springSecurityFilterChain 등록
4) web.xml에 명시했던 springSecurityFilterChain이 request를 가로채서 권한이 있는지 없는지 체크하는데 이를 위해 Autentication(인증)과 Authorization(권한)을 명시
4-1) security-contxt.xml 생성 후 namespace에서 security와 관련된거 추가
에러 나는 경우가 있어서 스프링 공식 홈페이지에서 제공하는 namespace사용 추천
4-2) web.xml에 ContextLoaderListener가 읽어들이도록 추가
4-3) 메모리상에 유저의 정보 추가
- password설정은 스프링4는 plain text형식이 상관이 없는데 5부터는 허용이 안된다. encoded text형식을 사용해야함
- password에 `{id}encodedPassword형식으로 어떤encode를 사용했는지의 id와 실제 password형식으로 넣어줘야함
- encoding은 encryption(암호화)와 hashing(해쉬)방법이 있다.
{noop}
는 암호화 되있지 않았음을 no operaion
4-4) 유저의 권한 추가
- auto-config -> 로그인이나 로그아웃같은 부분에 대해서 자동설정
- use-expressions -> expression 사용 설정
- isAuthenticated() ->인증된 사람만 허용
- permitAll -> 전부 허용
- dennyAll -> 전부 거부
- if~ else if~ else if~ 형식
5) DB에 유저의 정보를 저장하는 방식으로 변경
- data-source-ref -> DB연동이므로 datasource를 지정해줘야함
- users-by-username-query -> 유저 이름을 스프링이 파악하기 위해 sql문 지정
- authorities-by-username-query -> 그 유저에 대한 권한을 스프링이 파악하기 위해 sql문지정
6) DB Table 생성 및 레코드 삽입