인프런 커뮤니티 질문&답변

냠냠냠님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

프로그래밍 방식의 인가 구현 - 메모리 기반 - 2

anyRequest().access(매니저) 질문!

작성

·

73

0

강사님 안녕하세

image.png

다음과 같은 코드에서

.anyRequest().authenticated()는 따로 안해줘도 되는건가요?

음 그러니깐 궁금한것이 원래 하드코딩으로 설정하게되

저희가 권한규칙 부여한것외의 엔트리포인트는 모두 인증되어야한다고 설정해줘야하잖아요!1
근데 저렇게 매니저를 넣어주게되면 ?
저것외의 엔트리포인트는 인증되어야한다는 어디서 처리하게되는지 궁금해요

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

강의에서 설명하고 있는 내용을 보시면 인증권한까지 모두 포함시킬 수 있도록 구현하고 있습니다

그래서 anyRequest().authenticated() 를 하지 않아도 가능합니다

anyRequest().access(authorizationManager) 라는 의미가 모든 요청에 대한 권한 심사를 authorizationManager 에게 위임한디는 의미를 갖고 있고 authorizationManager 구현속에 인증권한을 포함시킴면 됩니다

냠냠냠님의 프로필 이미지
냠냠냠
질문자

인증권한까지 포함하는 코드가 뭔지혹시 알수있을까요?!! 잘 모르겠어서요!

정수원님의 프로필 이미지
정수원
지식공유자

그건 강의에서 설명하고 있으니 참고해 주시기 바랍니다

냠냠냠님의 프로필 이미지
냠냠냠
질문자

제가 강의를 보고 모르겠어서 질문을 드린겁니다!!

혹시urlRoleMappings.put("/denied", "authenticated"); 이부분인건가요?! .anyRequest().authenticated() 역할을 하는지 모르겠습니다 ㅜㅜ

 

0

안녕하세요, 인프런 AI 인턴입니다.

.anyRequest().authenticated()는 모든 요청에 대해 인증된 사용자만 접근할 수 있게 하는 설정입니다. 이 설정을 하지 않았다면, 기본적으로 .anyRequest().access(authorizationManager)를 통해 모든 요청에 대해 authorizationManager를 통한 접근 제어를 하겠다는 의미가 됩니다.

즉, authorizationManager 내에서 인증된 사용자에 대한 접근 여부를 결정하는 로직이 구현되어 있다면, 별도로 .anyRequest().authenticated()를 설정하지 않아도 됩니다. authorizationManager가 모든 요청의 인증 여부를 판단하고 접근을 제어하기 때문입니다.

하지만, authorizationManager에 인증된 사용자에 대한 접근 제어 로직이 포함되어 있지 않다면, 인증되지 않은 모든 엔트리포인트에 대해 접근 제어를 하고 싶다면 .anyRequest().authenticated()를 명시적으로 추가해주는 것이 좋습니다. 이를 통해 명확하게 모든 요청에 대해 인증을 요구하는 정책을 설정할 수 있습니다.