작성
·
569
·
수정됨
0
안녕하세요.
필터 삽입 위치 관련해 작년에 남겨주신 답변에서, 인증 필터 전후로 넣는 게 적절하다 판단되어 UsernamePasswordAuthenticationFilter 앞에 넣으셨다고 설명해주셨는데요.
그럼 편의에 따라 인증 필터인 AnonymousAuthenticationFilter 뒤에 넣어서 CustomOAuth2AuthenticationFilter에서 authentication 객체의 null 처리를 하지 않는 방법은 괜찮을까요? 실제로 해보니까 NullException이 발생하지 않더라구요.
추가적으로 다음 처리를 해줄 때, key("anonymous"), principal("anonymousUser")은 정해진 값을 넣어주신 걸까요? ROLE_ANONYMOUS는 정해진 권한인 것 같은데..
if (null == authentication) {
authentication = new AnonymousAuthenticationToken("anonymous", "anonymousUser",
AuthorityUtils.createAuthorityList("ROLE_ANONYMOUS"));
}
감사합니다.
답변 2
1
특별한 문제가 발생하지 않는다면 필터의 추가 위치는 크게 상관없습니다
다만 이 위치에 넣어야 하는 명확한 이유는 알고 추가해야 한다는 것만 아시면 됩니다.
익명 클래스는 모든 데이터가 기본적으로 들어가 있습니다.
그리고 설정에서 변경도 가능합니다.
강의에서는 임의의 값을 넣었다고 보시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Spring Security에서 AnonymousAuthenticationFilter
는 인증되지 않은 사용자도 어플리케이션을 사용할 수 있도록 익명 사용자로 인식시켜주는 필터입니다. UsernamePasswordAuthenticationFilter
앞이나 뒤에 다른 필터를 추가하는 것은 어플리케이션의 보안 요구사항과 필터가 수행하는 작업에 따라 결정됩니다.
CustomOAuth2AuthenticationFilter를 AnonymousAuthenticationFilter
뒤에 두는 것이 특별한 문제가 없고, 예외 없이 잘 동작한다면 그 방식을 사용하셔도 됩니다. 하지만, 필터의 순서가 중요할 수 있으므로 각 필터가 어떤 역할을 하는지 충분히 이해하고 결정해야 합니다.
AnonymousAuthenticationToken
의 경우 “anonymous”와 “anonymousUser”는 익명 사용자를 인식시키기 위해 사용하는 기본 값입니다. 이러한 값은 변경할 수 있지만, 일반적으로 익명 사용자를 위한 합리적인 기본값으로 사용됩니다. ROLE_ANONYMOUS
는 익명 사용자에게 부여하는 권한의 기본값으로, 귀하가 말씀하신 것처럼 이는 정해진 값입니다.
이러한 설정은 AnonymousAuthenticationFilter
작업의 일부입니다. 필터 구성이나 보안 설정에 대한 좀 더 자세한 정보는 Spring Boot Reference Documentation의 Security 섹션을 참조할 수 있습니다.
null 처리와 관련하여, 귀하의 커스텀 필터에서 AnonymousAuthenticationToken
을 명시적으로 생성하는 것은 authentication
객체가 null일 때 기본적인 익명 사용자 인증 정보를 제공하는 방식으로 보입니다. 이러한 방법은 익명 사용자가 있는 경우 완전히 익명상태로 처리될 것입니다.
질문에 정확히 답변이 되었기를 바라며 추가적인 질문이 있으시면 언제든지 물어보세요.
감사합니다!