스프링 시큐리티 커스터마이징

Shaun·2021년 8월 14일
1

Spring Security

목록 보기
2/19

스프링 시큐리티 커스터마이징

PasswordEncoder

  • 가장 먼저 필요한설정은 PasswordEncorer 라는 객체이다. 간단히 말하면 비밀번호를 암호화 시켜주는것이다.

  • PasswordEncorer는 인터페이스라 구현을 하던 구현한 클래스를 이용해야 한다. 고맙게도 스프링 시큐리티에서는 BCryptPasswordEncoder 라는 클래스를 주로 사용한다.

BCryptPasswordEncoder = bcrypt라는 해시 함수를 이용해서 패스워드를 암호화 목적으로 설계된 클래스이다.

암호화된 패스워드

  • 암호화된 패스워드는 다시 복호화가 불가능 하고 매번 암호화된 코드값은 달라진다

  • 암호화된 코드값을 원본과 비교해 암호화된 결과인지만을 확인 할수있지만 원본 내용은 볼수 없다.

- 비밀번호 7942를 encode()로 암호화 해준뒤 원본비밀번호와 비교를 해주는 코드이다.

AuthenticationManger 설정

  1. 암호화된 패스워드를 이용하기 위해서는 사용자가 필요하다.

  2. AuthenticationManger의 설정을 쉽게 도와주는 configure()를 사용할 예정이다.

configure() = 파라미터가 다른 여러 개의 메서드가 있다. @Override 해서 사용한다.

  • AuthenticationMangerBuilder라는 타입을 매개변수로 사용하는 cofigure() 을 만들어준다.(말그대로 인증매니저 를 설정할떄 사용한다)

  • inMemoryAuthentication() 을 이용해서 한 명의 사용자를 만들어준다.

  • password 에는 이전에 설정해뒀던 암호화된 비밀번호를 설정해준다.

  • roles = 권한설정

  • /sample/login 에서 설정한 아이디와 7942를 입력해주면 로그인에 성공한다.

인가 가 필요한 리소스 설정(접근제한)

  • 쉽게 말하면 특정 url 주소에 접속할때 접근제한을 설정 하는 방법이다.

  • 접근 제한은 크게 설정을 통해서 1)패턴을 지정하거나 2)어노테이션을 이용해서 적용 하는 방법이 있다.(여기서는 1번 을 사용한다)

  • configure() 라는 매서드를 httpSecurity 타입을 파라미터로 받는 매서드로 오버라이드 해 접근제한을 처리할수 있다.

  • 코드를 보면 대략적으로 이해 할수있다. USER라는 권한(ROLE)를 가진 사용자만 그 자원(URL)에 접속 가능 할수있게 만들었다.

    authorizeRequests() 인증이 필요한 자원(페이지) 선택
    antMatchers() 앤스스타일의 패턴으로 원하는 자원 선택(페이지)
    permitAll() 말그대로 누구에게나 허용(로그인 필요 x)

formLogin()

  • httpSecurity 객체는 연속적으로 ',' 을 사용해서 추가적인 자원에 대한 설정을 할수있다.

  • formLogin() 은 권한이 없거나 문제가 발생해서 접근이 제한되면 로그인 페이지를 보여주도록 지정할 수 있고 화면으로 로그인 방식을 지원한다.

ROLE_USER

  • 여기서 USER 라는 단어는 ROLE_USER라는 상수와 같은 의미이다.
  • 스프링 시큐리티의 내부에서 USER라는 단어를 상수처럼 인증된 사용자를 의미한다.
profile
호주쉐프에서 개발자까지..

0개의 댓글