Written on
·
275
0
antMatcher("/admin/**")
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
이라는 구문이 /admin 으로 들어온 모든 요청에 대해 인증된 사용자만 접근을 허용하고, 인증은 httpBasic() 방식 (request에 id, password를 받아 사용자 인증 처리)으로 수행한다 라고 해석해도 되나요??
그리고 최초 admin 접근 시에는 id, password 입력 요청창이 뜨는데, 인증 성공 이후 서버를 재시작하거나, 서버에게 발급받은 Jsession Id를 쿠키에서 지워보아도 별다른 인증 처리 없이 admin 화면으로 이동합니다.. 제 생각대로라면 재시작된 서버의 시큐리티 컨텍스트에는 인증 정보가 없을 뿐더러, 클라이언트에서 온 JsessionID 또한 Null이니 당연히 재 인증을 받아야 한다고 생각해는데요.. 왜 인증 절차 없이 넘어가는 건지 궁금합니다.
Answer 2
8
1. /admin 으로 들어온 모든 요청에 대해 인증된 사용자만 접근을 허용하고, 인증은 httpBasic() 방식 (request에 id, password를 받아 사용자 인증 처리)으로 수행한다 라고 해석해도 되나요??
네 맞습니다.
2. 서버를 재시작하거나, 서버에게 발급받은 Jsession Id를 쿠키에서 지워보아도 별다른 인증 처리 없이 admin 화면으로 이동합니다
httpBasic 인증은 세션을 이용한 방식이 아닌 토큰을 이용하는 방식입니다
그래서 서버를 재기동하거나 JSESSIONID 값이 없어도 빨간테두리의 헤더값이 존재하는 한 인증이 이루어집니다.
그러나 base64 인코딩 방식으로 토큰이 생성되기 때문에 보안에 매우 취약합니다.
반드시 ssl 로 통신이 이루어져야 합니다.
1