이름 | 정의 | 역할 |
AuthenticationConfiguration | Spring Security에서 사용자 인증 관련 설정을 담당하는 핵심 클래스 | 1. 인증 공급자 설정 - 사용자 인증을 처리할 AuthenticationProvider 등록 - UserDetailsService, OAuth2UserService 등의 인증 공급자 설정가능 2. 인증 관리자 설정 - 사용자 인증을 처리할 AuthenticationManager 설정 - 인증 공급자를 통해 사용자 인증 요청 처리 3. 인증 필터 설정 - 사용자 인증을 처리할 인증 필터(UsernamePasswordAuthenticationFilter)를 설정 - 인증 필터를 통한 사용자 인증 요청 처리 4. 인증 예외 처리 설정 - 인증 실패 시 처리할 ExceptionTranslationFilter 설정 - 인증 예외 발생 시 적절한 응답을 반환하도록 처리 |
JWT(Json Web Token) | 웹 앱에서 사용되는 인증 방식으로, JWTUtil은 JWT를 생성, 검증, 해석하는 등의 기능을 제공하는 유틸리티 클래스 | 1. JWT 토큰 생성 - 사용자 정보를 JWT 토큰으로 생성 2. JWT 토큰 검증 - 클라이언트에서 전달된 JWT 토큰의 유효성 검증 3. JWT 토큰 해석 - JWT 토큰에서 사용자 정보를 추출 |
CustomOAuth2UserService | Spring Security에서 제공하는 OAuth2 인증 기능을 확장하여 사용자 정보를 관리하는 서비스 클래스 | 1. 사용자 정보 저장 - OAuth2 인증 과정에서 받은 사용자 정보를 DB에 저장 - 지속적인 사용자 관리 가능 2. 사용자 정보 업데이트 - OAuth2 인증시 받은 사용자 정보가 변경되었을 경우, DB 등의 정보를 업데이트 3. 사용자 정보 조회 - DB에 저장된 사용자 정보를 조회 할 수 있음 - 사용자 관련 기능 구현 가능 4. 사용자 권한 관리 - 사용자 정보와 함께 권한 정보를 관리 할 수 있음 - 사용자 권한 기반 접근 제어 가능 |
CustomSuccessHandler | Spring Security에서 사용자 인증 성공 시 처리를 담당하는 핸들러 클래스 | 1. 사용자 정보 처리 - 인증 성공 시 사용자 정보를 추출하고 필요한 처리 수행 - 사용자 권한 정보를 세션에 저장하는 등의 작업 수행 2. 리다이렉션 처리 - 인증 성공 후 이동할 URL을 동적으로 결정할 수 있음 - 사용자의 역할에 따라 다른 페이지로 리다이렉션할 수 있음 3. 추가 응답 처리 - 인증 성공후 응답에 추가적인 정보를 포함할 수 있음 - JWT 토큰을 응답에 포함하는 등의 작업 수행 할 수 있음 |
AuthenticationManager | Spring Security에서 사용자 인증을 처리하는 핵심 인터페이스 | 1. 인증처리 - 사용자가 제공한 인증 정보(ID,PW)를 바탕으로 사용자 인증을 처리 - 인증 성공시, 인증된 사용자 정보를 반환 2. 인증 공급자 관리 - 사용자 인증을 처리할 AuthenticationProvider 객체 관리 - 사용자 인증 요청이 들어오면, 등록된 AuthenticationProvider를 통해 인증 수행 3. 예외 처리 - 인증 과정에서 발생할 수 있는 예외상황(잘못된ID/PW) 처리 - 예외 발생 시 적절한 응답 반환 |
configuration | Spring 프레임워크에서 앱의 설정 정보를 관리하는 핵심 개념 | 1. 앱 설정 정의 - DB 연결 정보, 서버 포트, 로깅 설정 등 앱의 다양한 설정 정보 정의 - 앱의 동작 방식 제어 가능 2. Bean 객체 생성 및 관리 - 앱에서 사용되는 객체(빈)을 생성 및 관리 - 빈 객체의 의존성 주입, 스코프 관리등 수행 3. 프로파일 관리 - 개발, 테스트, 운영 등 다양한 환경에 따른 설정 정보 관리 - 환경에 따른 적절한 설정 정보를 선택하여 적용 4. 외부 설정 파일 연동 - 앱 외부에 존재하는 설정 파일(app.yml 등)을 읽어들여 활용가능 |
SecurityFilterChain | 웹 애플리케이션의 보안을 구현하기 위한 일련의 필터 체인을 정의하는 것으로, 필터 체인은 HTTP 요청이 처리되는 과정에서 적용되며, 각 필터는 특정한 보안 기능을 수행. | 1. 인증(Authentication) 관리 - 사용자의 로그인 및 인증 과정을 처리. - 세션 관리, 토큰 기반 인증 등을 수행. 2. 권한 관리(Authorization) - 인증된 사용자의 권한 및 접근 제어를 관리 - URL 기반 접근 제한, 메서드/리소스 레벨 접근 제한 등을 설정 가능 3. 보안 헤더 설정: - 응답 헤더에 보안 관련 정보를 추가하여 웹 애플리케이션의 보안을 강화 - CSRF 토큰 생성, XSS 방지 등의 기능을 수행 4. 예외 처리 - 보안 관련 예외 상황 발생 시 적절한 처리를 수행 - 로그인 실패, 권한 없는 접근 등의 예외를 처리가능 |
BCryptPasswordEncoder | Spring Security에서 제공하는 비밀번호 암호화 유틸리티로, BCrypt 해싱 함수를 사용해 비번을 안전하게 암호화하고 저장할 수 있음 | 강력한 암호화 - BCrypt 해싱 함수는 SHA-256 알고리즘보다 더 강력한 암호화 알고리즘을 사용 하여 비밀번호가 안전하게 보호 적응형 해싱 - BCrypt 해싱 함수는 해싱 비용을 조절 - 하드웨어 성능 향상에 따라 보안 수준을 높임 솔트 적용 - BCrypt 해싱 함수는 각 비밀번호에 대해 고유한 솔트 값을 생성하여 적용 - 동일한 비밀번호라도 서로 다른 해시값을 생성 속도 조절 - BCrypt 해싱 함수는 해싱 속도를 조절 - 무차별 대입 공격에 대한 보안성 증가 |
csrf(Cross-Site Request Forgery) | 악의적인 사용자가 피해자의 웹 브라우저를 이용해 피해자의 의도와 무관하게 서버에 요청을 보내는 공격 기법 | 예외처리 경우 1. API 서버 - CSRF 공격이 발생할 가능성이 낮은 API 서버의 경우, CSRF 보안 기능을 비활성화할 수 있습니다. 2. 특정 엔드포인트 - 일부 엔드포인트에서만 CSRF 보안이 필요하다면, 해당 엔드포인트를 제외하고 CSRF 보안 기능을 비활성화할 수 있습니다. 3. 테스트 환경 - 테스트 환경에서 CSRF 보안 기능을 비활성화하여 테스트 수행을 간단하게 할 수 있습니다. |
'Spring' 카테고리의 다른 글
프로젝트에 필요한 내용들(jwt) (0) | 2024.07.14 |
---|