LoginContext — 로그인을 수행하는 진입점
LoginContext — 로그인을 수행하는 진입점
LoginContext는 Subject를 인증하는 데 사용되는 기본 메서드들을 설명하고, 기반 인증 기술과 독립적인 애플리케이션을 개발할 수 있는 방법을 제공하는 클래스예요.
본문
public class LoginContext extends Object
Configuration은 특정 애플리케이션에 사용될 인증 기술, 즉 LoginModule을 지정해요. 다른 LoginModule들이 애플리케이션 자체를 수정하지 않고도 애플리케이션 아래에 플러그인될 수 있어요. 플러그형 인증을 지원하는 것 외에도, 이 클래스는 스택형 인증(stacked authentication)의 개념도 지원해요. 애플리케이션은 두 개 이상의 LoginModule을 사용하도록 구성될 수 있어요. 예를 들어 애플리케이션 아래에 Kerberos LoginModule과 스마트 카드 LoginModule을 함께 구성할 수 있어요.
어떻게 쓸까요?
일반적인 호출자는 이름과 CallbackHandler로 LoginContext를 인스턴스화해요. LoginContext는 Configuration의 인덱스로 이름을 사용해서 어떤 LoginModule을 사용할지, 전체 인증이 성공하려면 어떤 것들이 성공해야 하는지를 결정해요. CallbackHandler는 기본 LoginModule에 전달되어 사용자와 통신·상호작용할 수 있게 해줘요 (예: GUI로 사용자 이름과 비밀번호를 묻기).
LoginContext를 인스턴스화한 후 호출자는 login 메서드를 호출해 Subject를 인증해요. login 메서드는 구성된 모듈을 호출해서 각각의 인증 유형(사용자 이름/비밀번호, 스마트 카드 PIN 검증 등)을 수행해요. LoginModule은 인증이 실패해도 재시도하거나 지연을 도입하지 않는다는 점을 기억해야 해요. 그런 작업은 LoginContext 호출자의 몫이에요.
login 메서드가 예외를 던지지 않고 반환되면 전체 인증이 성공한 것이에요. 호출자는 그 후 getSubject 메서드를 호출해 새로 인증된 Subject를 얻을 수 있어요. Subject와 연관된 Principals와 Credentials는 Subject의 getPrincipals, getPublicCredentials, getPrivateCredentials 메서드를 호출해 얻을 수 있어요.
로그아웃
Subject를 로그아웃하려면 호출자가 logout 메서드를 호출해요. login 메서드와 마찬가지로 이 logout 메서드는 구성된 각 LoginModule의 logout 메서드를 호출해요.
핵심 메서드
void login() throws LoginException—Subject를 인증해요.void logout() throws LoginException—Subject를 로그아웃해요.Subject getSubject()— 인증된Subject를 반환해요.
구체적인 생성자(LoginContext(String name, CallbackHandler callbackHandler) 등)와 메서드 시그니처는 공식 API 문서를 참고해요.