๋ฐ์ํ
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
ํ ํฐ์ ๊ฒ์ฆ ํ ํํฐ ์์ฑ
ํํฐ๋ฅผ ์ด์ฉํ์ฌ ํ ํฐ ๊ฒ์ฆ์ ํ์ ๋, ์ ํจํ์ง ์๋ค๋ฉด ํด๋น ์ปจํธ๋กค๋ฌ๋ก ๋ ์ด์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ ์ ์์ต๋๋ค.
public class MyFilter3 implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse res = (HttpServletResponse) servletResponse;
res.setCharacterEncoding("utf-8");
// ๋ง์ฝ, token์ ๊ฒ์ฆํ์ฌ, Controller์ ์ ๊ทผ ์ฌ๋ถ ์ค์ !
if (req.getMethod().equals("POST")) {
String auth_header = req.getHeader("Authorization");
if(auth_header.equals("secret")) {
filterChain.doFilter(req, res);
} else {
PrintWriter writer = res.getWriter();
writer.println("์ธ์ฆ ์๋จ");
}
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}
}
- POST๋ก ์์ฒญ์ด ์๋ค๋ฉด
- ํค๋์ Authorization ๊ฐ์ ๊บผ๋ ๋๋ค.
- ํด๋น ๊ฐ์ด ์์๋ก ๋ง๋ค์ด๋์ ํค ๊ฐ์ธ secret์ด ๋ง๋์ง ํ์ธํฉ๋๋ค.
- ๋ง๋ค๋ฉด, ๊ณ์ ํํฐ๋ฅผ ํ๊ฒ ๋ ํ๊ณ
- ํ๋ฆฌ๋ค๋ฉด, "์ธ์ฆ ์๋จ" ์ด๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ์๋ตํฉ๋๋ค.
ํด๋น ํํฐ๋ฅผ Security ์ค์ ์ ๋ฑ๋ก
http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class); // securityFilter๊ฐ ์คํ๋๊ธฐ ์ ์!
Postman ์ผ๋ก ํ ์คํธ
์๋ชป๋ ํ ํฐ์ผ๋ก ์์ฒญํ์ ๋
- ์ฐ๋ฆฌ๊ฐ ์์ฑํ ํํฐ์ ๊ฑธ๋ ค์ controller์ ์ ๊ทผํ์ง ๋ชปํ์ต๋๋ค.
์ฌ๋ฐ๋ฅธ ํ ํฐ์ผ๋ก ์์ฒญํ์ ๋
- controller์์ ์ฌ๋ฐ๋ฅธ ์๋ต์ ๋ฐ์์ต๋๋ค.
์ด๋ฐ์์ผ๋ก ์ฌ์ฉ์๊ฐ ์ต์ด๋ก ๋ก๊ทธ์ธํ ๋, JWT๋ฅผ ์๋ฒ์์ ์์ฑํด์ ์ฃผ๋ฉด
์ดํ์ ํด๋ผ์ด์ธํธ์์ JWT ํ ํฐ์ ๋ด์ ๋ค์ ์๋ฒ๋ก ๋ก๊ทธ์ธ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด JWTํ ํฐ ๊ฒ์ฆ์ผ๋ก ์ ์ผ ๋จผ์ ๊ฑธ๋ฌ๋ผ ์ ์์ต๋๋ค.
๋ฐ์ํ