본문 바로가기
업무 기록/WEB

Spring Security 인증처리 SecurityContextHolder.getContext(), getAuthentication(), getPrincipal()

by code2772 2023. 7. 31.

[ 목차 ]

    728x90
    반응형

    Spring Security 컨텍스트에서 현재 인증된 사용자의 사용자 이름(사용자 ID)을 얻는 데 사용되다. 사용자가 인증되었고 연관된 UserDetails 개체가 있다고 가정하면. 이 코드는 UserDetails 개체에서 사용자 이름을 추출하여 userId 변수에 할당하는 것이다.

     

    ✔ 예제코드

    @GetMapping("")
        public ResponseVO getUserInfo() {
        String userId = ((UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername();
        System.out.println("getUserInfo");
        log.debug("getUserInfo[" + userId + "]");
            return userService.getUserInfo(userId);

     

     

    SecurityContextHolder.getContext()
    : SecurityContextHolder는 스프링 시큐리티에서 현재 실행 중인 스레드의 보안 정보를 제공하는 정적 클래스, getContext() 메서드를 호출하여 현재 스레드의 보안 컨텍스트를 얻는다.

    getAuthentication()

    : SecurityContextHolder.getContext()를 통해 가져온 보안 컨텍스트에서 현재 사용자의 인증 정보(Authentication)를 얻기 위해 getAuthentication() 메서드를 호출한다. Authentication 객체는 현재 사용자의 인증 및 권한 정보를 포함한다.

    getPrincipal()

    getAuthentication() 메서드가 반환한 Authentication 객체에서 현재 사용자의 주체(principal)를 가져오기 위해 getPrincipal() 메서드를 호출한다. getPrincipal() 메서드는 Authentication 객체에 포함된 주체를 나타내는 객체를 반환하고 주로 UserDetails 객체를 반환한다.

    (UserDetails)

    getPrincipal() 메서드가 반환한 주체 객체를 UserDetails 타입으로 캐스팅. UserDetails 인터페이스는 스프링 시큐리티에서 사용자의 세부 정보를 나타내는 인터페이스이다. 사용자의 이름, 암호화된 비밀번호, 권한 등을 포함하는 객체이다.

    getUsername()

    UserDetails 객체에서 사용자의 이름(사용자 아이디)을 가져오기 위해 getUsername() 메서드를 호출하며. getUsername() 메서드는 사용자의 이름(사용자 아이디)을 반환.

     

     

    반응형