Spring Security

    Spring Security OAuth 2.0를 이해해보자

    Spring Security OAuth 2.0를 이해해보자

    OAuth란? 게임이나 쇼핑몰 같은 웹사이트를 이용하다보면 [Google로 간편 로그인], [NAVER로 간편 로그인] 등과 같이 타 서비스의 계정으로 로그인할 수 있도록 구현된 것을 확인할 수 있습니다. 타 서비스의 계정을 통해 로그인하는 기능을 구현하는 가장 쉬운 방법은 구현하고자 하는 웹 사이트에서 Google이나, NAVER의 아이디나 비밀번호를 요청하여 제공받고, 이를 저장하여 사용하는 방법일 것입니다. 하지만 이런 방법은 보안상으로 좋지 않은 방법입니다. 사용자들은 가입하고자 하는 웹 사이트에 자신의 Google이나 NAVER 계정 정보를 줘야하고, Google이나 NAVER 입장에서도 자신이 갖고 있는 사용자의 정보를 다른 웹 사이트에 공유한다는 것이 부담스럽기 때문입니다. 이를 해결하고자 ..

    Google Login (OAuth2.0: Open Authorization)

    Google Login (OAuth2.0: Open Authorization)

    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 클라이언트 ..

    Thymeleaf에서 Spring Security 이용

    Thymeleaf에서 Spring Security 이용

    설정 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 Deprecated

    WebSecurityConfigurerAdapter Deprecated 이유 시큐리티 설정 클래스를 사용하려 WebSecurityConfigurerAdapter 클래스를 상속받으려 했는데 스프링 부트 2.7, Spring Security 5.7 이후 버전부터 WebSecurityConfigurerAdapter 클래스가 Deprecated 되었다. 해결: WebSecurityConfigurerAdapter 대체 이에 대한 대처 방법으로 공식 문서를 확인하면 된다. 공식 문서에 나와있는 여러 대체 방법 중 HttpSession 기반인 HttpSecurity 기반 부분을 옮겨적도록 하겠다. HttpSecurity 구성 변경 전: WebSecurityConfigurerAdapter를 상속 @Configurati..

    Spring Security 프로젝트 시작

    Spring Security 프로젝트 시작

    의존성 추가 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, @PostAuthorize, @Secured

    Spring Security @PreAuthorize, @PostAuthorize, @Secured

    Spring Security에서 메서드 수준 접근 제어를 위해 사용되는 어노테이션들이 있습니다. 이 어노테이션들을 사용하여 메서드의 실행 전후에 인가 검사를 수행하여 접근 권한을 제어할 수 있습니다. @PreAuthorize 메소드가 실행되기 전에 인가(Authorization)를 검사하는데 사용됩니다. 메소드의 실행 전에 지정된 스프링 EL(SpEL) 표현식을 평가하고, 표현식이 true인 경우에만 메소드가 실행됩니다. 인가 검사를 통과하지 못하면 예외가 발생하며, 메소드 실행은 중지됩니다. @PreAuthorize("hasRole('ROLE_ADMIN')") public void deleteUser(int userId) { // ... } @PostAuthorize 메소드 실행 후에 인가(Author..

    Spring Security Session을 이용한 구현 예제

    Spring Security Session을 이용한 구현 예제

    설정에 대한 설명보다는 기능 중점으로 설명을 하기 위해 Spring Boot를 활용하여 간단한 예제를 작성해보도록 하겠습니다. Token 방식을 활용한 것이 아닌 기본 Session 방식을 이용하여 Spring Security를 구현한 예제입니다. 추후에 Token 방식을 활용한 예제를 포스팅하도록 하겠습니다. 의존성 설정 dependencies { // Spring Security implementation 'org.springframework.boot:spring-boot-starter-security' } 보안 구성 파일 작성: WebSecurityConfig.java `WebSecurityConfigurerAdapter`를 상속하고 `@EnableWebSecurity` 어노테이션으로 활성화합니다...

    Spring Security 스프링 시큐리티 이해하기

    Spring Security 스프링 시큐리티 이해하기

    Spring Security Spring Security는 Spring 기반 애플리케이션에서 `보안` 기능을 쉽게 통합할 수 있도록 도와줍니다. 주로 `인증`과 `인가`를 처리하며 사용자의 신원 확인과 권한 부여를 담당합니다. Spring Security의 기능들을 나열하자면 다음과 같습니다. 인증(Authentication) 사용자의 신원을 확인(증명)하고 인증하는 기능을 제공합니다. 사용자가 제공한 자격 증명(아이디/비밀번호 등)을 검증하고, 인증된 사용자에게 접근 권한을 부여합니다. 다양한 인증 방식을 지원하며, 사용자 정의 인증 프로세스를 구현할 수 있습니다. 인가(Authorization) 인증된 사용자에 대한 권한 부여 및 접근 제어를 처리합니다. 사용자의 역할, 권한, 리소스에 대한 접근 권..