티스토리 뷰

Spring

Spring Security - InMemoryUser

엔꾸꾸 2019. 9. 8. 15:16

Spring Security - InMemory User 사용하기

  • 시큐리티가 기본적으로 생성해주는 User를 사용하는것이 아닌 우리가 직접 생성한 유저정보를 사용하도록 설정한다.

기본 시큐리티 유저 커스터마이징 하기

  • 스프링 부트 애플리케이션을 실행하면 다음과 같이 Log에 매번 새로운 비밀번호가 설정된 것이 남는다.
  • 이러한 자동 설정은 어디서 오는것일까 ?
  • 로그에서 그 힌트를 제공하고 있다.
    • UserDetailsServiceAutoConfiguration

 

UserDetailsServiceAutoConfiguration

  • 다음은 우리가 Log에서 힌트를 얻었던 UserDetailsServiceAutoConfiguration 클래스이다.
  • 이중에서 유심히 살펴봐야 할것은 inMemoryUserDetailsManager Method 이다.
  • 좀더 자세히 살펴보자.

 

  • SecurityProperties로 부터 User 정보를 받아 기본 유저 정보를 생성하는것 처럼 보인다.
  • 그렇다면 SecurityProperties 클래스는 어떻게 구성되어 있을까 ?

 

SecurityProperties

  • spring.security 를 prefix로 설정을 주입받아 사용 할 수 있다.

 

예상 한것과 마찬가지로 내부적으로 랜덤하게 생성하고 있었다.

  • 패스워드를 지정해준다면 passwordGenerated 가 false가 되며 더이상 유저가 생성되지 않는다.
  • 그렇다면 정말 그런 설정이 가능한지 한번 테스트를 진행해보자.

 

다음과 같이 application.properties 파일에 설정을 진행한다.

 

설정을 진행하고 난뒤 다시 스프링부트 애플리케이션을 실행하면, 이전과는 달리 패스워드가 자동설정되던 Log가 없다.

 

 

결과

  • http://localhost:8080/admin 으로 요청을 보내면 폼 인증을 위한 시큐리티 기본 로그인폼이 나타난다.
  • admin/1234 로 인증을 진행하면 인증이 완료되고 ADMIN role을 가지고 있기때문에 admin 페이지로 접근이 가능해진다.
  • 하지만 유저를 1명이상 생성이 불가능하다.

 

 

유저 를 여러명 생성하기

  • properties 에 설정된 값들을 모두 제거하고 SecurityConfig 클래스로 이동한다.
  • AuthenticationManagerBuilder 를 가지는 configure Method를 Override 한다.
  • 인증 방법은 다양한다.
    • inMemory
    • Jdbc
    • Ldap
    • ...
  • 그중에서 inMemory를 사용한다.
  • 이전 properties 설정과 크게 다르진 않지만 눈에 띄는 설정은 바로 password 부분이다.
  • password 부분을 좀 더 살펴보자.

 

  • password 앞에 prefix로 {noop} 이라는 문자열이 붙는다.
  • 왜 그럴까 ?
    • Security 5.x 부터 기본 패스워드 인코더가 변경되었다.
    • 이전과는 방식이 바뀌어 해당 패스워드가 어떠한 암호화방식으로 암호화 되었는지를 알려주는 prefix 문자열이다.
    • 해당 prefix문자열이 없다면, 잘못된 값이라고 판단, 예외를 발생시킨다.

해결되지 않은 문제

  • 유저가 추가될때마다 설정파일을 열어 추가해야한다.

'Spring' 카테고리의 다른 글

Spring Security - PasswordEncoder  (0) 2019.09.08
Spring Security - JPA 연동하기  (0) 2019.09.08
Spring Security - Security Config  (0) 2019.09.07
Spring Security - Security 적용하기  (0) 2019.09.07
Spring Security - Project Setting  (0) 2019.09.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함