JavaTM Platform
Standard Ed. 6

javax.security.auth.spi
인터페이스 LoginModule



public interface LoginModule

LoginModule 는, 인증 기술의 프로바이더에 의해 구현되는 인터페이스를 기술합니다. 로그인 모듈은 특정 타입의 인증을 제공하는 어플리케이션에 플러그 인 됩니다.

어플리케이션이 LoginContext API 를 호출하는 한편으로, 인증 테크놀러지 프로바이더는 LoginModule 인터페이스를 구현합니다. Configuration 에서는, 특정의 로그인 어플리케이션으로 사용되는 LoginModule 를 지정합니다. 이 때문에, 어플리케이션 자체를 변경하지 않고 , 복수가 다른 로그인 모듈을 플러그 인으로서 어플리케이션으로 사용할 수 있습니다.

LoginContext 는,Configuration 의 읽기 및 적절한 로그인 모듈의 인스턴스화를 실행합니다. 각 LoginModule 은,Subject,CallbackHandler, 공유 LoginModule 상태, 및 LoginModule 고유의 옵션을 사용해, 초기화됩니다. Subject 는, 현재 인증중의 Subject 를 나타내, 인증에 성공하면(자), 관련하는 Credential 로 갱신됩니다. LoginModule 에서는 CallbackHandler 를 사용해 사용자와 통신합니다. 예를 들어 사용자명과 패스워드의 입력을 요구할 때,CallbackHandler 를 사용합니다. CallbackHandler 는 null 의 경우도 있는 것에 유의해 주세요. Subject 를 인증하기 위해서 반드시 CallbackHandler 가 필요한 LoginModule 에서는,LoginException 를 throw 하는 일이 있습니다. 또, 공유 상태를 사용해, 복수의 로그인 모듈간에 정보를 공유할 수도 있습니다 (옵션).

LoginModule 고유의 옵션은, 관리자나 사용자가 로그인 Configuration 내에서 설정하는, 이 LoginModule 용으로 구성한 옵션을 나타냅니다. 이러한 옵션은, 로그인 모듈 자체에 의해 정의됩니다. 또 그 동작 제어는, 로그인 모듈의 내부에서 행해집니다. 예를 들어, 로그인 모듈로 디버그/테스트 기능을 지원하는 옵션을 정의하는 경우를 생각합시다. 옵션의 정의에서는, 열쇠와 값으로 구성되는 구문 (debug=true 등)이 사용됩니다. 로그인 모듈은, 키를 사용해 값을 취득할 수 있도록, 옵션을 Map 로서 포함합니다. 로그인 모듈이 정의 가능한 옵션의 수에 제한은 없습니다.

호출측의 어플리케이션은, 인증 프로세스를 단일의 조작이라고 봅니다. 다만,LoginModule 내부의 인증 프로세스는, 명확한 2 개의 국면으로 나누어져 있습니다. 최초의 국면에서는, 로그인 모듈의 login 메소드가, 로그인 문맥의 login 메소드에 의해 불려 갑니다. 다음에, LoginModulelogin 메소드는, 실제의 인증을 실행하고 나서 (예를 들어, 패스워드의 입력을 유발 (prompt)해, 입력된 패스워드를 검증한다), 인증 상태를 전용 상태 정보로서 보존합니다. 끝나면(자), LoginModule 의 login 메소드에서는 true (성공했을 경우) 또는 false (무시할 수 없는 경우)를 돌려주는지,LoginException 를 throw 해 실패를 지정합니다. 장해가 발생했을 경우, 로그인 모듈은 인증을 재시행할 수 없습니다. 또, 지연의 발생도 인정되지 않습니다. 이러한 태스크의 실행은, 어플리케이션이 담당합니다. 어플리케이션이 인증의 재실행을 시도하면(자), 로그인 모듈의 login 가 재차 불려 갑니다.

2 번째의 국면에서는, LoginContext 의 인증 전체가 성공했을 경우 (관련하는 REQUIRED, REQUISITE, SUFFICIENT, OPTIONAL 의 LoginModule 이 성공),LoginModulecommit 메소드가 불려 갑니다. 로그인 모듈의 commit 메소드는, 비공개에서의 보존 상태를 체크해, 인증이 성공했는지의 여부를 확인합니다. LoginContext 전체의 인증에 성공해, LoginModule 자체의 인증에 성공했을 경우는,commit 메소드에 의해 관련하는 Principal (인증된 식별 정보)와 Credential (암호화열쇠등의 인증 데이터)이,LoginModule 내에 있는 Subject 와 관련지을 수 있습니다.

로그인 문맥의 인증 전체가 실패했을 (관련하는 REQUIRED, REQUISITE, SUFFICIENT, 및 OPTIONAL 로그인 모듈이 성공하지 않았다) 경우, 각 LoginModuleabort 메소드가 불려 갑니다. 이 경우,LoginModule 는, 당초 보존되고 있던 인증 상태를 모두 삭제/파기합니다.

Subject 의 로그아웃에는, 1 개의 국면만이 관계하고 있습니다. LoginContext 는, 로그인 모듈의 logout 메소드를 호출합니다. LoginModulelogout 메소드는, 로그아웃 처리를 실행해, Principal 나 Credential 를 Subject 로부터 삭제하거나 세션 정보를 기록하거나 합니다.

LoginModule 의 구현은, 인수 없음의 생성자 을 제공할 필요가 있습니다. 이것에 의해,LoginModule 를 로드하는 클래스는,LoginModule 를 인스턴스화할 수 있습니다.

관련 항목:
LoginContext , Configuration

메소드의 개요
 boolean abort ()
          인증 프로세스를 중지하는 메소드입니다 (국면 2).
 boolean commit ()
          인증 프로세스를 위탁하는 메소드입니다 (국면 2).
 void initialize (Subject  subject, CallbackHandler  callbackHandler, Map <String ,? > sharedState, Map <String ,? > options)
          이 LoginModule 를 초기화합니다.
 boolean login ()
          Subject 를 인증하는 메소드입니다 (국면 1).
 boolean logout ()
          Subject 를 로그아웃 시키는 메소드입니다.
 

메소드의 상세

initialize

void initialize(Subject  subject,
                CallbackHandler  callbackHandler,
                Map <String ,? > sharedState,
                Map <String ,? > options)
이 LoginModule 를 초기화합니다.

LoginModule 가 인스턴스화 되고 나서,LoginContext 에 의해 불려 갑니다. 이 메소드의 목적은, 이 LoginModule 를 관련 정보로 초기화하는 것입니다. 이 LoginModulesharedState 파라미터나 options 파라미터에 포함된 정보를 인식할 수 없는 경우, 그러한 정보는 무시됩니다.

파라미터:
subject - 인증을 받는 Subject

callbackHandler - 최종 사용자와의 통신 (사용자명과 패스워드의 입력등)에 사용되는 CallbackHandler

sharedState - 구성된 것 외의 LoginModule 과 공유하는 상태

options - 이 LoginModule 용으로 로그인 Configuration 로 지정된 옵션

login

boolean login()
              throws LoginException 
Subject 를 인증하는 메소드입니다 (국면 1).

이 메소드의 구현에서는,Subject 를 인증합니다. 예를 들어, 사용자명이나 패스워드라고 하는 Subject 의 정보의 입력을 요구하고 나서, 패스워드를 검증합니다. 이 메소드에서는 인증의 시행 결과를, LoginModule 내에 비공개 상태로서 보존합니다.

반환값:
인증에 성공했을 경우는 true. 이 LoginModule 가 무시되는 경우는 false
예외:
LoginException - 인증에 실패했을 경우

commit

boolean commit()
               throws LoginException 
인증 프로세스를 위탁하는 메소드입니다 (국면 2).

LoginContext 의 인증 전체가 성공했을 경우 (관련하는 REQUIRED, REQUISITE, SUFFICIENT, 및 OPTIONAL 의 각 LoginModule 가 성공했을 경우)에 불려 갑니다.

이 LoginModule 자체의 인증에 성공했을 경우는 (login 메소드로 보존된 비공개 상태를 취득해 조사한다), 이 메소드에 의해 관련하는 Principal 와 Credential 이,LoginModule 내에 있는 Subject 에 관련지을 수 있습니다. 이 LoginModule 자체의 인증에 실패했을 경우는, 일단 보존되고 있던 상태를 삭제 또는 파기합니다.

반환값:
이 메소드가 성공했을 경우는 true. 이 LoginModule 가 무시되는 경우는 false
예외:
LoginException - 위탁에 실패했을 경우

abort

boolean abort()
              throws LoginException 
인증 프로세스를 중지하는 메소드입니다 (국면 2).

LoginContext 의 인증 전체가 실패했을 경우 (관련하는 REQUIRED, REQUISITE, SUFFICIENT, 및 OPTIONAL 의 각 LoginModule 가 실패했을 경우)에 불려 갑니다.

이 LoginModule 자체의 인증에 성공했을 경우는 (login 메소드로 보존된 비공개 상태를 취득해 조사한다), 일단 보존되고 있던 상태가 이 메소드에 의해 클린 업 됩니다.

반환값:
이 메소드가 성공했을 경우는 true. 이 LoginModule 가 무시되는 경우는 false
예외:
LoginException - 중지에 실패했을 경우

logout

boolean logout()
               throws LoginException 
Subject 를 로그아웃 시키는 메소드입니다.

이 메소드의 구현에서는, Subject 의 Principal 와 Credential 를 삭제 또는 파기합니다.

반환값:
이 메소드가 성공했을 경우는 true. 이 LoginModule 가 무시되는 경우는 false
예외:
LoginException - 로그아웃에 실패했을 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.