Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
authentication에서 나올 수 있는 결과물
1. getName()
• 설명: 인증된 사용자의 이름을 반환합니다. 일반적으로는 사용자의 username이 반환되며, 사용자명은 인증 절차에서 사용되는 고유한 식별자입니다.
• 예시: authentication.getName()
• 반환 값: String
2. getPrincipal()
• 설명: Principal은 인증된 사용자 자체에 대한 정보를 나타냅니다. 실제로는 사용자 객체나 사용자 이름을 포함할 수 있습니다. 인증 방식에 따라 반환되는 객체가 다를 수 있습니다. 예를 들어, UserDetailsService를 사용하면, 이 메서드는 UserDetails 객체를 반환할 수 있습니다.
• 예시: authentication.getPrincipal()
• 반환 값: 사용자가 구현한 UserDetails 객체나, String 타입의 사용자 이름
3. getAuthorities()
• 설명: 현재 사용자가 가진 권한 목록을 반환합니다. 이는 주로 사용자의 역할(Role)과 관련이 있으며, GrantedAuthority 목록으로 반환됩니다. 권한은 주로 ROLE_USER, ROLE_ADMIN과 같은 형태로 정의됩니다.
• 예시: authentication.getAuthorities()
• 반환 값: Collection<? extends GrantedAuthority>
4. getCredentials()
• 설명: 사용자가 인증할 때 사용한 자격 증명을 반환합니다. 일반적으로는 비밀번호가 될 수 있으나, 인증 후에는 종종 null로 설정됩니다. 이는 보안 상의 이유로 비밀번호를 더 이상 저장하지 않기 때문입니다.
• 예시: authentication.getCredentials()
• 반환 값: 비밀번호 혹은 null
5. getDetails()
• 설명: 인증 요청에 대한 부가 정보를 포함하는 객체입니다. 여기에는 사용자의 IP 주소, 세션 정보, 브라우저 정보 등 다양한 추가 정보가 포함될 수 있습니다.
• 예시: authentication.getDetails()
• 반환 값: 인증 제공자가 설정한 객체 (예: WebAuthenticationDetails)
6. isAuthenticated()
• 설명: 사용자가 인증되었는지 여부를 반환합니다. 인증이 완료된 상태면 true, 그렇지 않으면 false를 반환합니다.
• 예시: authentication.isAuthenticated()
• 반환 값: boolean
정리:
Authentication 객체는 현재 세션의 사용자에 대한 인증 정보 및 권한, 인증 상태 등을 담고 있습니다. 인증이 성공적으로 완료되면, 이 객체를 통해 사용자의 이름, 권한, 자격 증명, 세부 사항 등을 조회할 수 있습니다.
• getName(): 사용자 이름
• getPrincipal(): 사용자 정보
• getAuthorities(): 권한(역할)
• getCredentials(): 자격 증명 (예: 비밀번호)
• getDetails(): 추가 인증 정보
• isAuthenticated(): 인증 상태