Posts [개발자 블로그] Login With Spring Security
Post
Cancel

[개발자 블로그] Login With Spring Security

Spring Security

  • spring security는 filter에 의해 구현됨(오고가는 request response를 가로채서 필터에서 거르는식으로 구현됨)
    screenshot

1) filter패키지 및 filter 추가

screenshot

2) 관련 라이브러리 추가

  • config, web, core
    screenshot

3) web.xml에 springSecurityFilterChain 등록

1

4) web.xml에 명시했던 springSecurityFilterChain이 request를 가로채서 권한이 있는지 없는지 체크하는데 이를 위해 Autentication(인증)과 Authorization(권한)을 명시

4-1) security-contxt.xml 생성 후 namespace에서 security와 관련된거 추가

2

에러 나는 경우가 있어서 스프링 공식 홈페이지에서 제공하는 namespace사용 추천
3

4-2) web.xml에 ContextLoaderListener가 읽어들이도록 추가

4

4-3) 메모리상에 유저의 정보 추가

  • password설정은 스프링4는 plain text형식이 상관이 없는데 5부터는 허용이 안된다. encoded text형식을 사용해야함
  • password에 `{id}encodedPassword형식으로 어떤encode를 사용했는지의 id와 실제 password형식으로 넣어줘야함
  • encoding은 encryption(암호화)와 hashing(해쉬)방법이 있다.
  • {noop}는 암호화 되있지 않았음을 no operaion
    5

4-4) 유저의 권한 추가

  • auto-config -> 로그인이나 로그아웃같은 부분에 대해서 자동설정
  • use-expressions -> expression 사용 설정
  • isAuthenticated() ->인증된 사람만 허용
  • permitAll -> 전부 허용
  • dennyAll -> 전부 거부
  • if~ else if~ else if~ 형식
    6

5) DB에 유저의 정보를 저장하는 방식으로 변경

  • data-source-ref -> DB연동이므로 datasource를 지정해줘야함
  • users-by-username-query -> 유저 이름을 스프링이 파악하기 위해 sql문 지정
  • authorities-by-username-query -> 그 유저에 대한 권한을 스프링이 파악하기 위해 sql문지정
    7

6) DB Table 생성 및 레코드 삽입

8
9
10

7) hasRole(‘ROLE_USER’) -> ROLE_USER의 권한이 있는 사람만 접근하도록 허용

11

8) 테스트

This post is licensed under CC BY 4.0 by the author.