본문 바로가기
728x90
반응형

분류 전체보기278

[SpringSecurity] AccessToken 인증 💡 Access Token을 이용한 인증 JWT JSON Web Token의 약자 인증에 필요한 정보들을 암호화시킨 토큰을 말하며 Access Token으로 사용됨 JWT를 생성하기 위해선 Header, Payload, Verify Signature 객체를 필요로 함 Header 토큰의 타입을 나타내는 typ와 암호화할 방식을 정하는 alg로 구성됨 { 'alg': 'HS256', 'typ': 'JWT' } Paylod 토큰에 담을 정보를 포함 하나의 정보 조각을 클레임이라 부름 클레임의 종류 → Registered, Public, Private 3가지 존재 보통 만료 일시, 발급 일시, 발급자, 권한 정보 등을 포함 { 'sub': '1234567890', 'name': 'John Doe', 'admi.. 2023. 9. 10.
[SpringSecurity] Session 인증 💡 세션과 쿠키를 이용한 인증 인증 순서 사용자가 로그인을 함 서버에서 계정 정보를 읽어 사용자 확인 사용자에게 고유한 ID 값 부여하여 세션 저장소에 저장 이와 연결되는 Session ID를 발급 서버에는 HTTP 응답 헤더에 발급된 Session ID를 같이 보냄 이후 매 요청마다 HTTP 요청 헤더에 Session ID가 담긴 쿠키를 같이 보냄 서버에서는 쿠키를 받아 세션 저장소에서 대조를 한 후 대응되는 정보를 가져옴 인증이 완료되고 서버는 사용자에 맞는 데이터를 보내줌 장점 사용자의 정보는 세션 저장소에 저장되고, 쿠키는 그 저장소를 통과할 수 있는 출입증 역할을 함 → 쿠키가 담긴 HTTP 요청이 도중에 노출되더라도 쿠키 자체에는 유의미한 값을 갖고 잇지 않아서 쿠키에 사용자 정보를 담아 인증.. 2023. 9. 10.
[SpringSecurity] Authorization. 권한 SecurityFilerChain 당 한개의 FilterSecurityInterceptor를 둘 수 있고, 각 SecurityInterceptor당 한개의 AccessDecisionManager 를 둘 수 있습니다. 반면 Method 권한 판정은 Global 한 권한 위원회를 둡니다. 그래서 GlobalMethodSecurityConfiguration 을 통해 AccessDecisionManager 를 설정합니다. 인증이 모든 요청에 대해 공통적으로 처리해야 하는 것인데 반해 권한은 상황상황에 맞게 처리해야 하는 특징이 있습니다. 그래서 인증을 처리하는 코드는 필터와 어울리고, 권한은 interceptor 와 어울려 동작합니다. 필터는 servlet container 가 제공하는 구조를 스프링이 자체 f.. 2023. 9. 10.
[SpringSecurity] Authentication. 인증 💡 Authentication (인증)의 기본 구조 필터들 중에 일부 필터는 인증 정보에 관여한다. 이들 필터가 하는 일은 AuthenticationManager 를 통해 Authentication 을 인증하고 그 결과를 SecurityContextHolder 에 넣어주는 일입니다. 💡 Authentication에 들어가는 내용 Set authorities : 인증된 권한 정보 목록 principal : 인증 대상에 관한 정보로 사용자의 아이디 혹은 User객체가 저장된다. credentials : 인증 확인을 위한 정보로 주로 비밀번호가 온다. (※ 인증 후에는 보안을 위해 삭제한다.) details : 그 밖에 필요한 정보로 IP, 세션정보, 기타 인증요청에서 사용했던 정보들이 들어간다. boolea.. 2023. 9. 10.
[SpringSecurity] Security의 흐름 💡 서블릿 컨테이너 톰켓과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부르는데, 이런 웹 애플리케이션(J2EE Application)은 기본적으로 필터와 서블릿으로 구성되어 있다. 필터는 체인처럼 엮여있기 때문에 filter chain이라고도 불리는데, 모든 request 는 이 필터 체인을 반드시 거쳐야만 서블릿 서비스에 도착하게 됩니다. 그래서 스프링 시큐리티는 DelegatingFilterProxy 라는 필터를 만들어 메인 필터체인에 끼워넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록합니다. 이 필터체인은 반드시 한개 이상이고, url 패턴에 따라 적용되는 필터체인을 다르게 할 수 있다. 본래의 메인 필터를 반드시 통과해야만 서블릿에 들어갈 수 있는 단점을 보완하기 위해서 필터.. 2023. 9. 10.
[SpringSecurity] Spring Security란? 💡 필요 이유 웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인 정보를 가지고 있다. 이들 리소스를 보호하기 위해서 일반적으로 웹 사이트는 두가지 보안 정책을 설정해야 한다. [서버 리소스, 유저들의 개인정보] 💡 인증 (Authentication) 사이트에 접근하는 사람이 누구인지 시스템이 알아야 한다. 익명사용자(anonymous user)를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요하다. 로그인은 보통 username / password 를 입력하고 로그인하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있다. [UsernamePassword 인증] Session 관리 토큰 관리 (sessi.. 2023. 9. 10.
[SpringSecurity] Session 사용하기 1. UserDetailService 데이터베이스에서 회원정보를 가져오는 인터페이스 loadUserByUsername() 메소드를 통해 회원 정보를 조회 → 사용자의 정보와 권한을 갖는 UserDetails 인터페이스를 반환 2. UserDetails 회원 정보를 담는 인터페이스 직접 구현하거나 스프링 시큐리티에서 제공하는 User 클래스 사용(구현체) 3. MemberService 로그인/로그아웃 구현 MemberService.java UserDetailsService 인터페이스를 구현하고 loadUserByUsername() 메소드 오버라이딩 Builder 패턴을 이용하여 UserDetail 인터페이스를 구현한 User 객체 생성 후 반환 //implements해놨으니까 추상메소드 구현 @Overri.. 2023. 9. 10.
[SpringSecurity] JwtToken 사용하기 Jwt Token 로그인 💡 Use Case Specification (명세서) 우선 login, join을 제외한 페이지를 전부 막는다. 사용자가 login하면 id, pw를 검증하고 Token을 생성하여 발급한다. 발급 받은 Token 권한에 따라 해당 페이지를 접근할 수 있다. https://github.com/Lib0823/SpringSecurity-JWT_study.git 💡 [build.gradle] implementation 'io.jsonwebtoken:jjwt:0.9.1' implementation 'javax.xml.bind:jaxb-api:2.3.0' implementation 'org.springframework.boot:spring-boot-starter-security' Sour.. 2023. 9. 10.
[SpringSecurity] 에러 노트 SpringSecurity 사용 중 발생한 에러를 정리하는 곳입니다. Adapter 사용 에러에러 코드- ‘WebSecurityConfigurerAdapter' 사용 불가발생 원인- WebSecurityConfigurerAdapter 가 Deprecated  되었으니 SecurityFilterChain 를 Bean 으로 등록해서 사용해야 한다.해결 방법- ‘https://devlog-wjdrbs96.tistory.com/434 Matcher 사용 에러에러 코드- anthorizeRequests()와 antMatcher() 사용 불가발생 원인- HttpSecurity가 authorizeRequests()를 deprecate 해서 사용할 수 없음.해결 방법- authorizeHttpRequests().re.. 2023. 9. 10.
728x90
반응형