Principal
Principal (주체)
개인, 법인, 로그인 ID 같은 임의의 엔티티를 나타내는 데 사용할 수 있는 주체(Principal)의 추상 개념을 나타내는 인터페이스입니다.
본문
Principal 인터페이스는 개인(individual), 법인(corporation), 로그인 ID 등 어떤 엔티티든 표현할 수 있는 주체의 추상 개념을 나타냅니다. Subject는 하나 이상의 Principal을 가질 수 있으며, 인증(authentication)과 권한 부여(authorization) 과정에서 사용됩니다.
Principal은 equals, hashCode, toString 메서드를 반드시 구현해 의미 있는 동등성 비교가 가능하도록 해야 합니다. 같은 주체를 나타내는 두 Principal 객체는 equals로 같아야 하고 같은 해시 코드를 가져야 합니다.
Principal이 정의하는 메서드는 다음과 같습니다.
public String getName()— 이 주체의 이름을 반환합니다.public boolean implies(Subject subject)— 이 주체가 지정된Subject의 주체를 의미하는지 검사합니다. 기본 구현은subject.getPrincipals().contains(this)와 동일하며, 하위 클래스가 오버라이드할 수 있습니다.public boolean equals(Object obj)— 이 주체와 다른 객체의 동등성을 비교합니다.public int hashCode()— 이 주체의 해시 코드 값을 반환합니다.public String toString()— 이 주체의 문자열 표현을 반환합니다.
대표적인 구현으로는 X500Principal(X.509 인증서 주체)이나 Kerberos의 KerberosPrincipal 등이 있습니다.