분류 전체보기28 [Spring Security] 로그인/로그아웃 구현 및 타임리프 적용 1. 개요리엑트와 같은 클라이언트 사이드 렌더링일 경우 JWT 토큰을 사용해 로그인 처리를 했겠지만, 저같은 경우 서버 사이드 렌더링인 타임리프를 사용해 JWT 토큰 사용은 곤란했습니다. 따라서 시큐리티의 세션으로 로그인 로그아웃을 구현했고, formLogin을 사용했습니다.2. 설정 정보전체 설정 코드아래는 SecurityConfig 설정입니다. 저는 스프링 부트 3.1, 스프링 시큐리티 6.1 버전을 사용하고 있습니다.@Configuration@RequiredArgsConstructorpublic class SecurityConfig { private final MemberDetailsService memberDetailsService; private static final int ONE_MONT.. 2023. 7. 5. Spring의 HttpMediaTypeNotAcceptableException 예외 해결 1. 개요 스프링으로 프로젝트를 진행하다가 만난 상황입니다. 회원가입 시 이메일이 중복되었는지 확인하기 위해 다음과 같이 코드를 작성했습니다. $.ajax({ type: "post", url: "/register/validate/email", data: { email: email }, success: function (result){ console.log(result); }, error: function (result){ console.log(result); $('.email__result').html(response.message); isValidatedEmail = false; } }); ajax를 통해 유효성 검사하는 코드입니다. @PostMapping("/register/validate/email.. 2023. 7. 4. [Spring Security] 인증(Authentication), 인가(Authorization), 권한(Authority), 역할(Role) 알아보기 1. 인증과 인가인증은 시스템에 접근하기 위해 회원의 정보를 확인하는 것입니다. 인증은 인가 이전에 완료되며, 보통 회원의 로그인 정보가 필요합니다. 만약 인증이 실패한다면, 클라이언트는 401 UNAUTHORIZED 에러를 응답받습니다.인가란 특정 리소스에 접근하려는 회원의 권한을 확인하는 것입니다. 인가는 항상 인증 이후에 일어나며, 회원의 권한(privilege)이나 역할(role)이 필요합니다. 만약 인가가 실패한다면, 클라이언트는 403 FORBIDDEN 에러를 응답받습니다.정리인증은 인가 전에 완료된다.인증이 실패하면 401 UNAUTHORIZED 에러를 응답받는다.인가는 리소스에 접근하려는 회원의 권한을 확인하는 것이다. 예를 들어 본인이 작성한 게시글이 아닌데 삭제하려고 할 때이다.인가가 .. 2023. 6. 19. [Spring Security] CORS, CSRF란? CORS란?CORS란 “Cross-Origin Resource Sharing”의 약자입니다. CORS는 프로토콜인데, 서로 다른 origin일 시 리소스와 상호 작용하기 위해 클라이언트인 브라우저에서 실행되는 스크립트입니다. 예를 들어 UI 앱에서 서로 다른 도메인인 API를 호출할 시 CORS로 인해 기본적으로 차단됩니다. 이는 대부분의 브라우저에서 구현되는 W3C의 스펙입니다.따라서 CORS는 보안이나 공격과 같은 문제가 아니라 서로 다른 Orgin 간의 데이터 및 통신을 할 때 브라우저에서 이를 중지하기 위해 제공하는 기본 보호 기능입니다.예를 들어 큰 규모의 IT 기업일 경우 백엔드 서버와 프론트엔드 서버의 IP가 서로 다릅니다. 이때 프론트엔드 서버에서 클라이언트가 로그인을 했을 때, 백엔드의 .. 2023. 6. 14. [Spring Security] Password Encoder 알아보기 1. Password Encoder의 역할?비밀번호를 저장할 때, 일반 플레인 텍스트를 데이터베이스에 저장하면 안 됩니다. DBA나 해커가 고객 데이터베이스에 접근한다면, 비밀번호를 볼 수 있기 때문입니다. 따라서 비밀번호는 암호화 과정을 거쳐 데이터베이스에 저장하는 것이 바람직합니다. 여기 몇 가지 암호화 과정이 있습니다. 인코딩 방법인코딩 방법은 데이터를 한 형식에서 다른 형식으로 변환하는 프로세스이며 암호화와는 관련이 없습니다. 이 방법은 이미 너무 알려져 있으며, 복호화도 쉽습니다. 따라서 인코딩은 보안이 필요한 데이터에 사용되지 않습니다. 인코딩 방식은 ASCII, BASE64, UNICODE 방식이 있습니다. Encryption 방법Encryption 방법은 테이터를 변환하는 프로세스로 기밀을.. 2023. 6. 12. [Spring Security] UserDetailsService와 UserDetails 및 Authentication의 차이점 1. UserDetailsManager 이해하기스프링 시큐리티 필터를 거친 다음, AuthenticationManager는 적절한 Provider를 선택한 후 UserDetailsManager를 호출합니다.상속도전반적인 상속도입니다. 최하단의 3개의 클래스는 Spring Security에서 기본적으로 제공하는 매니저이며, 개발자가 정의한 매니저를 사용할 수 있습니다.1. UserDetailsServiceUserDetailService에서는 클라이언트에게 받은 username을 검색합니다. 해당 인터페이스에는 loadUserByUsername() 메소드만 정의되어 있습니다.public interface UserDetailsService { UserDetails loadUserByUsername(String.. 2023. 6. 10. 이전 1 2 3 4 5 다음