부트캠프 개발일기/Spring Security8 68일차: OAuth2 구현(Google) Google을 기준으로 OAuth2 인증 시스템을 적용해보고자 한다. https://console.cloud.google.com/ 에서 클라이언트 ID와 Secret를 생성한다. 클라이언트 ID와 Secret는 애플리케이션 설정정보로 사용된다. OAuth2을 적용하기 위해서는 OAuth2 의존성을 추가해주어야한다. implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' CSR 방식의 애플리케이션에 OAuth2를 적용되었을때의 흐름은 다음과 같다. Resource Owner가 웹 브라우저에서 Google로그인을 클릭한다. Frontend에서 Backend로 로그인 request를 전달한다. Google 로그인 화면을 요청하는 .. 2023. 5. 19. 67일차: OAuth2 인증 ❯ OAuth 2 사용자가 특정 서비스를 이용하기 위해서 신뢰할만한 벤더에게 인증 처리를 위임하는 것을 말한다. 주변에서 쉽게 찾아볼 수 있으며, 구글 로그인 / 네이버 로그인 등이 여기에 해당한다. OAuth2 에서 Componet의 종류와 역할 Resource Owner: 사용하고자하는 리소스의 실제 소유자를 의미한다. 예를들어 A라는 애플리케이션에 B라는 사람이 구글로그인을 통해 서비스를 이용하고자한다면, B가 구글로그인 서비스의 Resource Owner가 된다. Client: Resource Owner를 대신해 Resource에 액세스하는 애플리케이션을 의미한다. 위의 경우에서 A에 해당한다. Authorization Server: Client가 Resource Server에 접근할 수 있는 권.. 2023. 5. 18. 66일차: Spring Security에 JWT 적용 1. 의존 라이브러리 추가 JWT 를 적용하기 위해서는 build.gradle 설정파일에 Spring Security Srarter와 jjwt 라이브러리를 추가해주어야한다. dependencies { ... // Spring Security Starter 추가 implementation 'org.springframework.boot:spring-boot-starter-security' // JWT 기능을 위한 jjwt 라이브러리 implementation 'io.jsonwebtoken:jjwt-api:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly'io.jsonwebtoken:jjwt-jackson:0.11.5' } 2. Spring.. 2023. 5. 17. 65일차: 자격 증명 / JWT 인증 ❯ 자격 증명 HTTP 프로토콜은 요청 - 응답이 종료되면 상태를 저장하지 않고 연결이 끊어지게 된다. (무상태성, 비연결성) 로그인 상태가 유지되지 않는다면 해당 계정으로 추가적인 요청을 할 때마다 로그인 정보를 다시 전송해야 할 것이다. 이런 부분을 개선하기 위해 '자격 증명'을 통해 인증된 사용자 정보를 저장해야 한다. 자격 증명 방식은 크게 두 가지로 나누어 설명할 수 있다. 세션 기반 자격 증명 방식: 인증된 사용자 정보를 세션 형태로 세션 저장소에 저장하는 방식. 인증 정보를 서버 쪽 세션 저장소에서 관리한다. SSR 방식에 적합한 형태이다. 토큰 기반 자격 증명 방식: 자격 증명 정보(Credential)를 통해 토큰(Token)을 부여받는 방식. 한번 사용자 자격을 인증받은 후에는 인증된 .. 2023. 5. 16. 64일차: 인증(Authentication), 인가(Authorization) ❯ Spring Security의 인증 처리 흐름 인증이란 적절한 사용자인지 확인하는것을 의미한다. 일반적으로 아이디, 패스워드를 통한 로그인 방식을 주로 사용하므로 해당 방식에 대한 인증 처리 흐름에 대해 그림으로 정리해보았다. 위 그림에서 비어있는 삼각형으로 구성된 화살표는 인터페이스와 그 구현클래스를 나타내며 흰색 박스는 DI 되어있는 객체를 의미한다. ❯ Spring Security의 인가 권한 부여 처리 흐름 인가는 적절한 권한을 가지고있는지 확인하는 것을 의미한다. 사용자의 권한과 관련된 필터는 AuthorizationFilter이다. 2023. 5. 15. 63일차: Spring Security (2) 웹요청 처리흐름, Filter Chain ❯ 보안이 적용된 웹 요청의 일반적인 흐름 사용자가 리소스를 요청하면 적절한 사용자인지 확인(인증)하고, 인증된 사용자에 대해서 접근 권한이 있는지 검증(인가)한다. 사용자의 요청이 엔드포인트(Controller 등)를 거쳐서 리소스에 도달하기 전에 위 그림과 같이 인증관리자 혹은 접근 결정 관리자같은 컴포넌트가 웹 요청을 가로채서 인증/인가를 수행하게 된다. 이처럼 서블릿 기반 애플리케이션에서 애플리케이션 엔드포인트에 요청이 도달하기 전에 요청을 가로채서 처리를 할 수 있도록 하는 것이 서블릿 필터(Servlet Filter)이다. 서블릿 필터는 인터페이스 형태로 정의되어 있으며 doFilter() 메서드 호출을 통해 필터 체인을 형성한다. 서블릿 필터는 하나 이상의 필터를 연결해서 필터 체인(Filt.. 2023. 5. 15. 이전 1 2 다음