Language/Spring Security (59) 썸네일형 리스트형 사용자 상세 서비스 - UserDetailsService 시큐리티 인증 / 인가 흐름도 UserDetailsServiceUserDetailsService의 주요 기능은 사용자와 관련된 상세 데이터를 로드하는 것이며 사용자의 신원, 권한, 자격 증명 등과 같은 정보를 포함 가능DB와 같은 저장소로부터 유저 정보를 가져올 때 사용→ 반드시 UserDetailsService를 사용해야하는 것은 아님이 인터페이스를 사용하는 클래스는 주로 AuthenticationProvider 이며 사용자가 시스템에 존재하는지 여부와 사용자 데이터를 검색하고 인증 과정 수행UserDetailsService의 loadUserByUsername 메서드⇒ 사용자의 이름으로 사용자 데이터를 검색하고, 해당 데이터를 UserDetails 객체로 반환 UserDetailsService 흐름도.. 인증 제공자 - AuthenticationProvider 시큐리티 인증 / 인가 흐름도 AuthenticationProvider사용자의 자격 증명을 확인하고 인증 과정을 관리하는 클래스로서 사용자가 시스템에 액세스하기 위해 제공한 정보(예: 아이디와 비밀번호)가 유효한지 검증하는 과정을 포함다양한 유형의 인증 메커니즘을 지원할 수 있는데, 예를 들어 표준 사용자 이름과 비밀번호를 기반으로 한 인증, 토큰 기반 인증, 지문 인식 등을 처리 가능인증 성공 시 Authentication 객체 반환 → 이 객체에는 사용자의 신원 정보와 인증된 자격 증명을 포함인증 과정 중 문제 발생 시 AuthenticationException과 같은 예외를 발생시켜 문제를 알리는 역할AuthenticationManager로부터 Authentication 객체를 전달 받아 인증 수행.. 인증 관리자 - AuthenticationManager 시큐리티 인증 / 인가 흐름도 AuthenticationManager인증 필터로부터 Authentication 객체를 전달 받아 인증 시도 → 인증 성공 시 사용자 정보, 권한 등을 포함한 Authentication 객체 반환AuthenticationManager는 여러 AuthenticationProvider들을 관리하며 AuthenticationProvider 목록을 순차적으로 순회하며 인증 요청을 처리AuthenticationProvider목록 중에서 인증 처리 요건에 맞는 적절한 AuthenticationProvider를 찾아 인증 처리 위임AuthenticationManagerBuilder에 의해 객체가 생성되며 주로 사용하는 구현체로 ProviderManager 제공AuthenticationM.. 인증 컨텍스트 - SecurityContext / SecurityContextHolder 시큐리티 인증 / 인가 흐름도 SecurityContext Authentication 저장 현재 인증된 사용자의 Authentication 객체를 저장 ThreadLocal 저장소 사용 SecurityContextHolder 를 통해 접근되며 ThreadLocal 저장소를 사용해 각 스레드가 자신만의 보안 컨텍스트를 유지 클라이언트마다 스레드 생성 → 스레드마다 로컬 저장소 존재 → 로컬 저장소에 시큐리티 컨텍스트 저장 ⇒ 각 스레드마다 독립적인 컨텍스트 객체를 가짐*스레드마다 독립적인 컨텍스트를 가지기 때문에 다른 스레드의 컨텍스트에 접근할 수 없어 자신만의 보안 컨텍스트가 유지 된다는 것 애플리케이션 전반에 걸친 접근성 애플리케이션의 어느 곳에서나 접근 가능하며 현재 사용자의 인증 상태나 권한을.. 인증 - Authentication 시큐리티 인증 / 인가 흐름도Servlet FilterDelegationFilterProxy최초 요청을 에서 받아 스프링 컨테이너에 있는 FilterChainProxy에게 요청 전달FilterChainProxy넘겨받은 요청을 여러 필터에 전달각 필터는 해당 요청을 처리하고 AuthenticationFilter로 연결AuthenticationAuthenticationFilter인증 처리 수행인증 성공 시 Authentication 객체를 생성하여 AuthenticationManager에게 전달AurthenticationManagerAuthenticationProvider에게 인증 위임AuthenticationProvider는 사용자 인증 정보를 확인UserDetailsService를 통해 사용자 정보 조회.. 요청 캐시 - RequestCache / SavedRequest RequestCache인증 절차 문제로 리다이렉트 된 후에 이전에 했던 요청 정보를 담고 있는 ‘SavedRequest’ 객체를 쿠키 혹은 세션에 저장하고 필요 시 다시 실행하는 캐시 메커니즘RequestCache 인터페이스의 구현체 ⇒ HttpSessionRequestCache SavedRequest로그인과 같은 인증 절차 후 사용자를 인증 이전의 원래 페이지로 안내하며 이전 요청과 관련된 여러 정보를 저장SavedRequest 인터페이스 구현체 ⇒ DefaultSavedRequest RequestCache는 SavedRequest를 세션이나 쿠키에 저장을 하고 필요 시 SavedRequest를 꺼내와서 그 안의 API를 활용하여 어떤 처리를 하는 관계흐름도인증 받지 않은 상태로 접근HttpSessi.. 로그 아웃 - logout() 스프링 시큐리티는 기본적으로 DefaultLogoutPageGeneratingFilter 를 통해 로그아웃 페이지를 제공 → “ GET / logout ” URL로 접근 가능폼 로그인 사용 시 DefaultLoginPageGeneratingFilter, DefaultLogoutPageGeneratingFilter 두 개가 자동 생성로그아웃 실행은 기본적으로 “ POST / logout “으로만 가능하나 CSRF 기능을 비활성화 또는 RequestMatcher 사용 시 GET, PUT, DELETE 모두 가능CSRF : 누군가가 사용자의 세션을 가지고 악의적인 목적으로 사용하는 것을 막기 위한 보안 기술(?)로그아웃 필터를 거치지 않고 스프링 MVC 에서 커스텀 하게 구현할 수 있으며, 로그인 페이지가 커.. 익명 사용자 - anonymous() 스프링 시큐리티에서 익명으로 인증된 사용자와 인증되지 않은 사용자 간에 실제 개념적 차이는 없으며 단지 액세스 제어 속성을 구성하는 더 편리한 방법을 제공한다고 볼 수 있음 SecurityContextHolder 가 항상 Authentication 객체를 포함하고 null 을 포함하지 않는다는 것을 규칙을 세우게 되면 클래스를 더 견고하게 작성 가능인증 받은 사용자, 익명 사용자(인증 받지 못한 사용자) 두 개의 객체로 구분인증 사용자와 익명 인증 사용자를 구분해서 어떤 기능을 수행하고자 할 때 유용할 수 있으며 익명 인증 객체를 세션에 저장하지 않음인증 사용자, 익명 사용자 모두 시큐리티 컨텍스트에 저장 단, 인증 사용자는 세션에 저장하지만 익명 사용자는 인증 받지 못한 상태를 유지할 필요가 없기 때문.. 이전 1 ··· 3 4 5 6 7 8 다음