일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바 #java #이클립스 #eclipse #switch #switch문 #사칙연산 #계산기 #calculator #간단한계산기
- Eclipse
- 자바 계산기
- 어노테이션
- 버블정렬
- Spring
- 자바
- 스프링
- 자바GUI
- 배열정렬
- 버블소트
- 오름차순정렬
- Swing
- 계산기
- annotation
- 계산기GUI
- 자바알고리즘
- 내림차순정렬
- 이클립스
- 알고리즘
- 숫자정렬
- 이클립스 #이클립스단축키 #자바 #자바단축키
- Java
- GUI
- MVC
- Today
- Total
온 코딩
[Spring Security] - Spring Secrete, Spring Security, sts 본문
[Spring Security] - Spring Secrete, Spring Security, sts
SummerON 2021. 7. 19. 14:541. SecurityConfig
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity security) throws Exception {
// 매개변수 security을 통해 전달받은 HttpSecurity 객체를 이용하여 인증, 인가를 제어
security.authorizeRequests().antMatchers("/").permitAll();
security.authorizeRequests().antMatchers("/member").authenticated(); // 인증된
security.authorizeRequests().antMatchers("/manager").hasRole("MANAGER"); // 인가하기 위한 규칙
security.authorizeRequests().antMatchers("/admin").hasRole("ADMIN"); // 인가하기 위한 규칙
// 크로스 사이트 위조 요청에 대한 설정 : csrf()
security.csrf().disable(); // RESTful 을 사용하기위해서는 CSRF 기능을 비활성화 해야한다..
//스프링 시큐리티가 제공하는 인증 로그인 화면을 사용하지 않을 경우
security.formLogin().loginPage("/login").defaultSuccessUrl("/loginSuccess",true);
//접근 권한 없음 페이지 처리
security.exceptionHandling().accessDeniedPage("/accessDenied");
//
security.logout().invalidateHttpSession(true).logoutSuccessUrl("/login");
}
}
url별 시큐리티화면 구성
/ - 인증하지 않은 모든 사용자가 접근 가능
/member - 인증을 통과한 사용자만 접근 가능
/manager - 인증을 통과했고, MANAGER권한을 가진 사용자만 접근 가능
/admin - 인증을 통과했고, ADMIN 권한을 가진 사용자만 접근가능
1. 특정 경로에 대한 권한을 가진 사용자만 접근을 허용할 경우
AuthorizedUrl은 HttpSecurity의 authorizeRequest()를 호출할 때 리턴되는 ExpressionInterceptUrlREgistry의 antMatchers()메소드를 통해 얻어낸다.
authorizedRequest() : 사용자 인증, 권 설정
autMatchers("url패턴") : 매칭되는 URL패턴들에 대한 접근 허용
=>permitAll() : 모든 사용자에 대한 접근 허용
=>hasRole("권한이름") : 특정 권한을 가진 사용자만 접근 허용
크로스 사이트 요청 위조 방지
1. 이름 : CSRF (Cross Site Request Forgery)
2. 내용 : 요청이 발생했을 때, 서버에서 요청에 대한 주체와 요청 절차에 대한 검증을 하지 않고
요청을 처리했을 경우 발생
-----------------------------------------------------
RESTfull
REST : 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
자원 : 넒은 의미로 소프트웨어가 관리하는 모든 것 (그림, 문서, 데이터 등)
DB에 학생 정보가 저장되어 있을 경우, 이 학생들의 정보가 자원.
일반적인 REST
좁은 의미로 http 를 통하여 CRUD를 실행하는 API.
http 프로토콜을 이용하기 때문에 URI(route)를 통해 자원을 표시하고,
http 메서드들을 통해 할 일(CRUD)을 처리하도록 설계된 아키텍쳐
RESTfull : 일반적으로 REST라는 아키텍처를 구현하는 웹서비스를 나타내기 위해 사용되는 용어.
REST API를 제공하는 웹 서비스를 RESTful 하다고 할 수 있다.,
RESTful 하지 못한 예
=> CRUD 기능을 모두 POST로만 처리하는 API
=> Route에 resurce, id 와 정보가 들어가는 경우
2. 모든 사용자에게 접근 권한을 부여할 경우 : AuthorizedUrl의 permitAll()을 이용하여 접근 허가
3. formLogin() 로그인(인증)페이지 설정
=> loginPage("URL 패턴") : 로그인이 필요한 url로 접근하면 URL패턴 화면으로 이동
4. logout() : 로그아웃 페이지 설정
스프링 싀큐리티의 인증 처리 방식은 기본적으로 HttpSession을 이용
따라서 브라우저가 종료되면 해당 세션도 자동으로 종료
만약 브라우저를 종료하지 않고 , 세션을 종료하면 사용자가 로그아웃 요청을 하고 서버는 해당 세션을 강제로 종료
invalidateHttpSession(true) : 현재 브라우저와 연관된 세션을 강제 종료
logoutSuccessUrl("/login") 로그아웃 후 이동할 화면으로 리다이렉트
'복습 ARCHIVE > 모델별 프로젝트' 카테고리의 다른 글
[Spring Boot] JPA - JPQL 사용하기 (0) | 2021.07.21 |
---|---|
[Spring Boot] JPQL과 SQL / Query Annotation / Querydsl (0) | 2021.07.16 |
[Spring Boot- Thymeleaf] 레이아웃 짜는 법 - Bootstrap (0) | 2021.07.09 |
[Spring boot](Spring starter JPA) Thymeleaf 시작 th: 태그모음 (0) | 2021.07.08 |
[Spring Boot](Spring Data JPA) memoTest - IntelliJ2 (0) | 2021.07.08 |