JWT Authentication 객체
1. principal
의미 : 현재 인증된 사용자의 주요 정보입니다.
일반적으로 포함되는 값 : 사용자 이름, 사용자 ID, 또는 사용자에 대한 식별 정보입니다.
UserDetails 인터페이스를 구현한 객체나 간단한 String으로 나타낼 수 있다.
예시 : CustomUserDetails를 통해 사용자의 ID, 이메일 , 닉네임 등 구체적인 정보가 담길 수 있다.
2. credentials
의미 : 인증에 사용되는 자격 증명이다.
일반적으로 포함되는 값 : 비밀번호, JWT 토큰 등으로 표현된다. 하지만 인증이 완료되면 보안을 위해 보통 null로 설정된다. 로그인 시 비밀번호가 설정되거나 , JWT 토큰을 통해 인증할 때 JWT가 저장될 수 있다.
3. authorities
의미 : 사용자가 가진 권한 목록이다.
일반적으로 포함되는 값 : GrantedAuthority 타입의 리스트로 , 사용자가 가진 역할(Role)이나 권한(Permission)정보가 들어간다.
예시 : ROLE_USER, ROLE_ADMIN 같은 역할이 포함될 수 있다. Spring Security는 이를 통해 접근 제어를 처리함.
4. details
의미 : 추가적인 인증 세부 정보이다. 인증 과정에서 제공될 수 있는 부가적인 정보로, 클라이언트 IP 주소나 세션 ID 같은 정보가 담길 수 있다.
일반적으로 포함되는 값 : WebAuthenticaitonDetails 같은 객체로 요청한 사용자의 IP 주소, 세션 정보등이 포함될 수 있다.
로그인 시 사용자의 IP 주소와 세션 ID가 포함되어 보안 로그나 감사를 위한 정보를 제공한다.
5. authenticated
- 의미: 인증 여부를 나타내는 boolean 값입니다.
- 일반적으로 포함되는 값: true 또는 false로 설정되며, Spring Security는 이 값이 true일 때만 인증된 사용자로 간주하여 보호된 자원에 접근을 허용합니다.
- 예시: 인증이 성공적으로 완료되면 true로 설정되며, 인증되지 않은 상태에서는 false로 남아 있습니다.