✔️ 인증 및 권한 부여
인증 및 권한 부여
- 스프링 프레임워크에서는 인증 및 권한 부여로 리소스 사용을 컨트롤 할 수 있는 Spring Security를 제공함
- 이를 이용하면 보안 처리를 자체적으로 구현하지 않아도 쉽게 필요한 기능을 구현할 수 있음
- Spring Security는 스프링의 Dispatcher Servlet 앞단에 Filter 형태로 위치하여
Dispatcher Servlet으로 넘어가기 전에 이 Filter가 요청을 가로채서 클라이언트의 리소스 접근 권한을 확인하고
없는 경우에는 인증 요청 화면을 자동 라다이렉트하게 됨


API 인증 및 권한 부여를 위한 작업
- 회원 가입, 로그인 API 구현
- 리소스에 접근 가능한 ROLE_USER 권한을 가입 회원에게 부여
- Spring Security 설정에서 ROLE_USER 권한을 가지면 접근 가능하도록 세팅
- 권한이 있는 회원이 로그인에 성공하면 리소스 접근이 가능한 JWT 토큰 발급
- 해당 회원은 권한이 필요한 API 접근 시 JWT 보안 토큰을 사용하여 리소스를 요청
/* 서버에 보안을 설정하기 위해 Configuration */
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().disable() // rest api 이므로 기본설정 사용안함. 기본설정은 비인증시 로그인폼 화면으로 리다이렉트
.cors().configurationSource(corsConfigurationSource())
.and()
.csrf().disable() // rest api이므로 csrf 보안이 필요없으므로 disable 처리.
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // jwt token으로 인증하므로 세션은 필요없으므로 생성 안 함.
.and()
.authorizeRequests() // 다음 리퀘스트에 대한 사용권한 체크
.antMatchers("/*/signin", "/*/signin/**", "/*/signup", "/*/signup/**", "/social/**").permitAll() // 가입 및 인증 주소는 누구나 접근가능
.antMatchers(HttpMethod.GET, "home/**").permitAll() // home으로 시작하는 GET 요청 리소스는 누구나 접근가능
.anyRequest().hasRole("USER") // 그외 나머지 요청은 모두 인증된 회원만 접근 가능
.and()
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class); // jwt token 필터를 id/password 인증 필터 전에 넣는다
}
'Tech Interview > Language' 카테고리의 다른 글
[Language] 목차 (0) | 2024.03.30 |
---|---|
[Language] Dirty Checking (0) | 2024.03.30 |
[Language] JPA (0) | 2024.03.30 |
[Language] Test Code (0) | 2024.03.30 |
[Language] Filter와 Interceptor 차이 (0) | 2024.03.30 |
✔️ 인증 및 권한 부여
인증 및 권한 부여
- 스프링 프레임워크에서는 인증 및 권한 부여로 리소스 사용을 컨트롤 할 수 있는 Spring Security를 제공함
- 이를 이용하면 보안 처리를 자체적으로 구현하지 않아도 쉽게 필요한 기능을 구현할 수 있음
- Spring Security는 스프링의 Dispatcher Servlet 앞단에 Filter 형태로 위치하여
Dispatcher Servlet으로 넘어가기 전에 이 Filter가 요청을 가로채서 클라이언트의 리소스 접근 권한을 확인하고
없는 경우에는 인증 요청 화면을 자동 라다이렉트하게 됨


API 인증 및 권한 부여를 위한 작업
- 회원 가입, 로그인 API 구현
- 리소스에 접근 가능한 ROLE_USER 권한을 가입 회원에게 부여
- Spring Security 설정에서 ROLE_USER 권한을 가지면 접근 가능하도록 세팅
- 권한이 있는 회원이 로그인에 성공하면 리소스 접근이 가능한 JWT 토큰 발급
- 해당 회원은 권한이 필요한 API 접근 시 JWT 보안 토큰을 사용하여 리소스를 요청
/* 서버에 보안을 설정하기 위해 Configuration */
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().disable() // rest api 이므로 기본설정 사용안함. 기본설정은 비인증시 로그인폼 화면으로 리다이렉트
.cors().configurationSource(corsConfigurationSource())
.and()
.csrf().disable() // rest api이므로 csrf 보안이 필요없으므로 disable 처리.
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // jwt token으로 인증하므로 세션은 필요없으므로 생성 안 함.
.and()
.authorizeRequests() // 다음 리퀘스트에 대한 사용권한 체크
.antMatchers("/*/signin", "/*/signin/**", "/*/signup", "/*/signup/**", "/social/**").permitAll() // 가입 및 인증 주소는 누구나 접근가능
.antMatchers(HttpMethod.GET, "home/**").permitAll() // home으로 시작하는 GET 요청 리소스는 누구나 접근가능
.anyRequest().hasRole("USER") // 그외 나머지 요청은 모두 인증된 회원만 접근 가능
.and()
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class); // jwt token 필터를 id/password 인증 필터 전에 넣는다
}
'Tech Interview > Language' 카테고리의 다른 글
[Language] 목차 (0) | 2024.03.30 |
---|---|
[Language] Dirty Checking (0) | 2024.03.30 |
[Language] JPA (0) | 2024.03.30 |
[Language] Test Code (0) | 2024.03.30 |
[Language] Filter와 Interceptor 차이 (0) | 2024.03.30 |