개발일지

2024.03.28TIL

과일바구니♡ 2024. 3. 28. 21:15

1. 스프링)기술면접질문

1)Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요?

Annotation은 주석이라는 의미를 가지며, 다양한 분야에서 사용되는 용어입니다. 특히 프로그래밍 언어에서의 Annotation은 코드 내에서 특별한 의미나 기능을 수행하도록 하는 메타데이터를 제공합니다.

일반적인 Annotation의 개념

정의: Annotation은 텍스트, 문서, 비디오 등에 추가 정보를 제공하는 주석이나 설명을 의미합니다. 이는 독자가 내용을 더 잘 이해할 수 있도록 돕습니다.

-예시: 학생이 교과서에 중요한 내용을 하이라이트하거나, 연구자가 논문에 주석을 달아 추가 설명을 하는 경우 등이 있습니다. 

프로그래밍 언어에서의 Annotation

정의: 프로그래밍 언어에서 Annotation은 코드에 대한 메타데이터를 제공하는 주석으로, 컴파일러에게 특정 동작을 지시하거나, 코드에 대한 정보를 제공하는 역할을 합니다.

예시:@Override: 자바(Java)에서 이 Annotation은 메소드가 부모 클래스의 메소드를 오버라이드(재정의)한다는 것을 나타냅니다.@Test: JUnit에서 특정 메소드가 테스트 케이스임을 나타내는 데 사용됩니다. @SpringBootApplication: 스프링 부트(Spring Boot) 애플리케이션의 메인 클래스에 사용되며, 스프링의 핵심 설정을 자동으로 구성해줍니다. 

Annotation은 프로그래밍에서 코드의 의도를 명확히 하고, 다양한 동작을 자동화하는 데 큰 역할을 합니다.

 

2)Spring Security의 구조와 JWT 발급 과정에 대해 설명해주실 수 있을까요?

Spring Security는 Spring 기반 애플리케이션의 보안을 위한 강력하고 맞춤화 가능한 인증 및 접근 제어 프레임워크입니다. JWT(JSON Web Token)는 사용자 인증 정보를 JSON 형태로 안전하게 전송하기 위한 개방형 표준입니다.

Spring Security의 구조

인증(Authentication)과 인가(Authorization): Spring Security는 크게 인증과 인가 두 가지 주요 과정으로 나뉩니다. 인증은 사용자가 누구인지 확인하는 과정이고, 인가는 인증된 사용자가 특정 자원에 접근할 수 있는 권한이 있는지 확인하는 과정입니다.

핵심 구성 요소:FilterChainProxy: 모든 보안 처리의 진입점으로, 다양한 보안 필터들을 관리하고 실행합니다.AuthenticationManager: 인증 과정을 관리합니다. 실제 인증을 처리하는 여러 AuthenticationProvider를 가질 수 있습니다.AccessDecisionManager: 인가 과정을 관리하며, 사용자가 요청한 자원에 접근할 수 있는지 결정합니다.

JWT 발급 과정

사용자 로그인: 사용자가 로그인 정보(일반적으로 사용자 이름과 비밀번호)를 입력합니다.

인증: Spring Security는 제공된 로그인 정보를 바탕으로 사용자를 인증합니다. 이 과정에서 AuthenticationManager가 중요한 역할을 합니다.JWT 생성 및 발급: 인증이 성공하면,

서버는 사용자의 정보와 함께 JWT를 생성합니다. JWT에는 사용자 식별 정보, 토큰의 만료 시간 등이 포함될 수 있습니다.

클라이언트에 JWT 전송: 생성된 JWT는 클라이언트(예: 웹 브라우저)에 전송됩니다.

클라이언트는 이후의 요청에서 이 토큰을 사용하여 자신을 인증할 수 있습니다.

JWT 검증: 클라이언트가 요청과 함께 JWT를 전송하면, 서버는 JWT의 유효성을 검증합니다. 유효한 토큰인 경우 요청을 처리하고, 그렇지 않은 경우 오류를 반환합니다.

 

 

'개발일지' 카테고리의 다른 글

2024.04.01 TIL  (0) 2024.04.01
2024.03.29 TIL  (0) 2024.03.29
2024.03.27 TIL  (0) 2024.03.27
2024.03.26 TIL  (1) 2024.03.26
2024.03.25 TIL  (0) 2024.03.25