인증 프로세스중 고유한 세션ID를 할당하지 않아 로그인 전과 후에 세션ID가 동일할때 공격자가 미리 유효한 세션 ID를 획득한 후 XSS같은 공격으로 공격자의 세션ID를 강제로 할당하여 로그인을 하게 만들면 공격자의 세션ID에권한이 부여된다.로그인 후 기존 세션을 무효

인증필더가 먼저 요청을 가로챈다.인증 필터는 authenticationManager에 인증 책임을 위임하고 authenticationManager는 authenticationProvider를 이용해 인증을 처리한다.authenticationProvider는 UserD

JdbcUserDetailsManager 이전 글에서 설명한 UserDetailsManager의 구현체이다.이전글의 InmemoryUserDetailsManager와 같이 구성클래스에서 빈으로 등록한다.그러나 추가로 rdb와 연결하기 위해서는 DataSource가 필요

주어진 문자열을 이용해 해시를 제공하거나 암호화를 수행한 결과를 반환.주어진 문자열과 기존에 인코딩된 문자열이 일치하는지 확인하는 메서드String,StringBuilder, StringBuffer와 같은 클래스가 상속받는 인터페이스문자열을 다루는 여러 추상 메서드를

Authentication Manager는 필터 계층에서 요청을 수신해 요청을 허용할지 거부할지를 Authentication Provider에 위임 하는 구성 요소이다.AuthenticationProvider에 대해 이해하기 위해서는 Authentication 인터페이
암호저장할때 bcrypt, scrypt을 지원하기 때문에 algorithm을 통해서 명시하도록 함.간단한 데이터를 넣기.“12345”를 generator를 통해 bcrypt로 해싱하면 다음과 같다.bcrpytEncoder의 기본 cost factor는 10이다(해싱 반

이전 글에서는 인증 필터와 권한부여필터에 대해 알아봤는데 이들 모두 스프링 시큐리티에서 제공하는 특정한 http필터이다.securityFilterChain에서 httpBasic메서드를 호출하는 것자체가 필터체인에 BasicAuthenticationFilter라는 htt

인증 필터를 통해 인증이 완료되면 UserDetails가 SpringContext에 저장하고 요청을 권한 부여 필터에 위임한다.권한 부여 필터는 보안 컨텍스트를 통해 UserDetails에 접근해 UserDetails의 메서드인 getAuthorities를 호출해 이용

사용자A가 있다A는 사이트B에 로그인한 상태였는데 그때 이메일에 들어있던 링크를 통해 사이트C로 이동했다.A가 사이트C로 이동한 순간 사이트C에 포함된 악성 스크립트가 실행된다.스크립트에는 사이트B에 대해 스크립트로 http POST요청을 보낸다.만일 CSRF보호를
일반적으로 브라우저는 로드된 도메인 이외의 도메인에 대한 요청을 허용하지 않는다.떄문에 벡엔드와 프론트엔드가 다른 도메인에서 호스팅된다면 클라이언트가 서버에 api요청을 할때 브라우저는api응답을 받지 않을 것이다.CORS 메커니즘은 이러한 엄격한 정책은 완화시켜 준다

사용자클라이언트권한부여 서버리소스 서버outh2는 권한 부여에 토큰을 사용한다. 보통 http basic에서는 요청마다 자격증명을 공유해야된다.자격증명이 매번 노출되므로 좋지않은 방법이다.토큰이 탈취당해도 계속해서 사용할 수 없다, 또한 자격증명이 탈취당하는것과는 다르

스프링 시큐리티로 outh2 인증 서버를 구현한다.outh2의 작동 원리에 대한 설명이 많이 생략되어 있기 때문에 이전 글을 이해해야 코드를 이해할 수 있다.종속성(maven기준)applyDefaultSecurity로 OAuth2인증서버의 기본 필터 구성을 한다.oid

권한 부여 서버로는 이전에 구현한 권한 부여 서버를 사용한다.oauth2ResourceServer는 http basic, loginform처럼 인증 필터을 등록하는 메서드다.Authorization헤더에 Bearer를 접두사로 붙여 access_token을 넣으면 된다

메서드 보안은 엔드포인트 보안과는 다르게 메서드 실행 전, 후 AOP를 이용해 규칙을 검증하고 검증에 통과하지 못하면 블럭하는 방법이다.엔드포인트를 통과했더라도 특정 서비스 호출에 인가과정이 필요하거나 추가적인 보안을 위해 메서드 보안을 사용한다.메서드 보안을 사용하기

Spring Security에 대한 기본적인 지식이 있다는 전제로 설명하기 때문에 Spring Security에 대한 지식이 없다면 이해가 쉽지 않다.start.spring.io에서 web, lombok, security를 추가,io.jsonwebtoken의 jwtt-