OAuth란? 게임이나 쇼핑몰 같은 웹사이트를 이용하다보면 [Google로 간편 로그인], [NAVER로 간편 로그인] 등과 같이 타 서비스의 계정으로 로그인할 수 있도록 구현된 것을 확인할 수 있습니다. 타 서비스의 계정을 통해 로그인하는 기능을 구현하는 가장 쉬운 방법은 구현하고자 하는 웹 사이트에서 Google이나, NAVER의 아이디나 비밀번호를 요청하여 제공받고, 이를 저장하여 사용하는 방법일 것입니다. 하지만 이런 방법은 보안상으로 좋지 않은 방법입니다. 사용자들은 가입하고자 하는 웹 사이트에 자신의 Google이나 NAVER 계정 정보를 줘야하고, Google이나 NAVER 입장에서도 자신이 갖고 있는 사용자의 정보를 다른 웹 사이트에 공유한다는 것이 부담스럽기 때문입니다. 이를 해결하고자 ..
Google 서비스 등록 https://console.cloud.google.com/getting-started Google Cloud console console.cloud.google.com 1.새 프로젝트 생성 2.생성한 프로젝트 선택 사이드에 있는 네비게이션 바에서 아래 이미지 처럼 클릭 3.사용자 인증 정보 -> OAuth 클라이언트 ID 만약 OAuth 동의를 하지 않은 상태면 아래 버튼을 클릭하여 OAuth 동의를해준다. OAuth 동의를 했다면 3-2) 단계로 넘어가자. 3-1)OAuth 동의 채울 수 있는 부분을 채워준 후 [2:범위] 단계로 넘어간다. 사용자의 정보를 어느 범위까지 액세스할 수 있는지 결정하는 곳이다. 테스트할 사용자의 메일을 입력해준다. 3-2) OAuth 클라이언트 ..
설정 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' 코드 Member Page ADMIN ROLE MANAGER ROLE USER ROLE ADMIN OR MANAGER ROLE 인증한 경우 익명인 경우(인증한 경우를 제외한 경우) Authenticated username: Authenticated user roles: 모든 권한을 가진 1user@dutmdcjf.com으로 접속한 경우 USER 권한만 가진 100user@dutmdcjf.com으로 접속한 경우
WebSecurityConfigurerAdapter Deprecated 이유 시큐리티 설정 클래스를 사용하려 WebSecurityConfigurerAdapter 클래스를 상속받으려 했는데 스프링 부트 2.7, Spring Security 5.7 이후 버전부터 WebSecurityConfigurerAdapter 클래스가 Deprecated 되었다. 해결: WebSecurityConfigurerAdapter 대체 이에 대한 대처 방법으로 공식 문서를 확인하면 된다. 공식 문서에 나와있는 여러 대체 방법 중 HttpSession 기반인 HttpSecurity 기반 부분을 옮겨적도록 하겠다. HttpSecurity 구성 변경 전: WebSecurityConfigurerAdapter를 상속 @Configurati..
의존성 추가 Spring Boot DevTools Spring Web Lombok Thymeleaf Spring Data JPA MariaDB Driver dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation '..
Spring Security에서 메서드 수준 접근 제어를 위해 사용되는 어노테이션들이 있습니다. 이 어노테이션들을 사용하여 메서드의 실행 전후에 인가 검사를 수행하여 접근 권한을 제어할 수 있습니다. @PreAuthorize 메소드가 실행되기 전에 인가(Authorization)를 검사하는데 사용됩니다. 메소드의 실행 전에 지정된 스프링 EL(SpEL) 표현식을 평가하고, 표현식이 true인 경우에만 메소드가 실행됩니다. 인가 검사를 통과하지 못하면 예외가 발생하며, 메소드 실행은 중지됩니다. @PreAuthorize("hasRole('ROLE_ADMIN')") public void deleteUser(int userId) { // ... } @PostAuthorize 메소드 실행 후에 인가(Author..