[Spring Error] Access is denied / org.springframework.security.access.AccessDeniedException: Access is denied
์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ ์ํ๋ฆฌํฐ ์ ์ฉ์, ๋ด๊ฐ ๋ค์ด๊ฐ๊ณ ์ ํ๋ ํด๋น ํ๊ฒ์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ถํ์ด ์ค์ ๋์ด ์๋ค๋ฉด ์ค์ ๋ ๊ถํ ์ด์ธ์ ์ ๊ทผ์ ๋ถ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด, 'ํ์'๊ณผ '๊ด๋ฆฌ์'๋ง ์ ๊ทผ ๊ฐ๋ฅํ ํ๊ฒ์ด ์กด์ฌํ๋ค๋ฉด ํด๋น ํ๊ฒ์ ๊ฐ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์ด์ฌ์ผ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ๊ทธ ์ธ์ ๋ค๋ฅธ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ผ๋ฉด ์ ๊ทผ์ด ๋ถ๊ฐํ๊ฒ ๋ค. ์ด์ ๊ฐ์ด ํ๊ฒ์ ์ค์ ๋์ด ์๋ ๊ถํ ์ด์ธ์ ๋ค๋ฅธ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ์ ๊ทผ ์ ๋ฐ์ํ๋ ์๋ฌ๊ฐ 'Access is denied'์๋ฌ์ ๊ฐ์ ์ ๊ทผ ๊ฑฐ๋ถ ์๋ฌ์ด๋ค.
Access is denied
์๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ
์ฒซ๋ฒ์งธ, ํ๊ฒ(๋ชฉ์ ์ง)์ ์ค์ ๋์ด ์๋ ๊ถํ๊ณผ ๋์ผํ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ ๊ทผํ๋ค.
@PreAuthorize ์ด๋ ธํ ์ด์ ์ ํตํด ํ๊ฒ์ผ๋ก ์ ๊ทผ ์ , ์ธ์ฆ์ด ์งํ๋์ด์ผํ๊ณ hasAnyRole์ ์ค์ ๋์ด ์๋ 'MEMBER'์ 'ADMIN' ๊ถํ๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ๊ฒ์ด ์ค์ ๋์ด ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 'MEMBER'์ 'ADMIN' ๊ถํ์ ๊ฐ๊ณ ์๋ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ ๊ทผํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒ ๋ค.
๋๋ฒ์งธ, ์ํ๋ฆฌํฐ ์ค์ ์ ํ์ธํฉ๋๋ค.
์ํ๋ฆฌํฐ ์ค์ ์๋ ์ฐจ์ด๊ฐ ์์ ์ ์์ต๋๋ค. ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก @Configuration์ ์ด์ฉํ์ฌ ์ค์ ํ๋ ๋ฐฉ์์ด ์๊ณ xmlํ์ผ์ ์ด์ฉํ์ฌ ์ค์ ํ๋ ๋ฐฉ์์ด ์๋๋ฐ ํ์์ ๋ฐฉ๋ฒ์ผ๋ก ์ค์ ๋์ด ์๋ ๋ด์ฉ์ผ๋ก ์ค๋ช ํ๊ณ ์์ต๋๋ค. ์ํ๋ฆฌํฐ ์ค์ ์ ํ์ธํ์๋ ํํฐ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ ์๋ ์ํ๋ฆฌํฐ๊ฐ ํํฐ๋ก๋ถํฐ ์ ๋์ํ๊ณ ์๋์ง ํด๋น ๊ตฌ์กฐ๊ฐ ์ค์ ๋ถ๋ถ์์๋ถํฐ ์ ์ ์ฉ๋์ด ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
์ธ๋ฒ์งธ, ์ง๊ทนํ ์ ์์ ์ธ ๋ฉ์ธ์ง์ธ ๊ฒฝ์ฐ๋ ์กด์ฌํฉ๋๋ค.
๊ถํ์ด ์ค์ ๋์ด ์๋ ํ๊ฒ์ผ๋ก ์ ๊ทผ ์, ๋ก๊ทธ์ธ ์ธ์ฆ ํ์ด์ง๊ฐ ๋ํ๋๋๋ฐ ์ด๋, ์๋ฌ ๋ฉ์ธ์ง๋ก 'Access is denied (user is anonymous)'์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํด๋น ์๋ฌ ๋ฉ์ธ์ง๋ ์คํ๋ง ํ๋ ์์ํฌ ๊ณต์ ๋ฌธ์์์ ์ค๋ช ํ๊ธธ '์ด๋ ์ต๋ช ์ฌ์ฉ์๊ฐ ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ฒ์์ผ๋ก ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ๋๋ฒ๊ทธ ์์ค ๋ฉ์ธ์ง์ ๋๋ค.' ๋ผ๊ณ ๊ฐ์ด๋ํ๊ณ ์์ผ๋ฉฐ, ์ด๋ ์ ์์ ์ธ ํ์์ด๋ฉฐ ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค๋ผ๊ณ ๊น์ง ์ค๋ช ํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์๋ฌ ๋๋ถ๋ถ์ ์คํ์ด๊ฑฐ๋ ์ค์ ์ ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์๋ก ์ ์ธ ๊ตฌ์กฐ์์ ์๋ชป๋ฌ๊ฑฐ๋ ๋ฑ๋ฑ ๋ค์ํ ์ํฉ์ด ์กด์ฌํ์ง๋ง, ๋ฐ์ํ๊ณ ์๋ ์๋ฌ์ ๋ฉ์ธ์ง๋ฅผ ํตํด์ ๊ฐ ์ํฉ์ ์ ์ถํด๊ฐ๋ฉด์ ์ฐพ์๋ณด๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฒ์์ ํญ์ ์ค์ผ ์ ์๋ค.
@Junesker