JavaTM Platform
Standard Ed. 6

javax.security.auth.login
클래스 LoginContext

java.lang.Object 
  상위를 확장 javax.security.auth.login.LoginContext


public class LoginContext
extends Object

LoginContext 클래스는, Subject 를 인증하기 위한 기본적인 메소드를 기술해, 기본이 되는 인증 테크놀러지에 의존하지 않는 어플리케이션 개발의 방법을 제공합니다. Configuration 는, 어플리케이션으로 사용되는 인증 테크놀러지 (LoginModule)를 지정합니다. 이 때문에, 어플리케이션 자체로 변경을 더하는 일 없이, 어플리케이션에 다른 LoginModule 를 플러그 인 할 수 있습니다.

이 클래스는, 플러그 인 가능한 인증을 지원할 뿐만 아니라, 스택 된 인증의 개념도 지원합니다. 어플리케이션을, 2 개(살) 이상의 LoginModule 를 사용하도록(듯이) 구성할 수 있습니다. 예를 들어, 1 개의 어플리케이션으로 Kerberos LoginModule 와 스마트 카드 LoginModule 의 양쪽 모두를 구성할 수 있습니다.

일반적으로의 호출측은,nameCallbackHandler 를 사용해 LoginContext 를 인스턴스화합니다. LoginContext 는,name 를 Configuration 의 인덱스로서 사용해, 사용하는 LoginModule 나, 인증 전체를 성공시키기 위해서(때문에) 성공하지 않으면 안 되는 LoginModule 를 판정합니다. CallbackHandler 는 기본이 되는 LoginModule 에게 건네져 LoginModule 는 사용자와의 주고받아 (그래피컬 사용자 인터페이스로 사용자명과 패스워드의 입력을 요구하는 등)를 실시합니다.

호출측은, LoginContext 를 인스턴스화하면(자),login 메소드를 호출해 Subject 의 인증을 실시합니다. login 메소드는 구성이 끝난 모듈을 호출해, 각종 인증 (사용자명/패스워드를 사용한 인증, 스마트 카드의 PIN 인증등)을 실시합니다. 인증에 실패해도, LoginModule 는 인증을 재시행하지 않습니다. 또, 지연 시간도 발생하지 않습니다. 이러한 태스크는, LoginContext 의 호출측이 담당합니다.

login 메소드가 예외를 throw 하는 일 없이 되돌아 왔을 경우는, 인증 전체에 성공한 것이 됩니다. 그리고, 호출측은 getSubject 메소드를 호출하는 것으로, 새롭게 인증된 Subject 를 취득할 수 있습니다. Subject 와 관련지을 수 있었던 Principal 와 Credential 는, Subject 의 getPrincipals,getPublicCredentials, 및 getPrivateCredentials 의 각 메소드를 호출하는 것으로 취득할 수 있습니다.

Subject 를 로그아웃 시키는 경우, 호출측은 logout 메소드를 호출합니다. login 메소드의 경우와 같이, 이 logout 메소드는 구성이 끝난 모듈의 logout 메소드를 호출합니다.

1 개의 LoginContext 로 복수의 Subject 를 인증할 수 없습니다. Subject 마다 별개의 LoginContext 를 사용할 필요가 있습니다.

다음의 내용은, 모든 LoginContext 생성자 에 적용됩니다.

  1. 주제
  2. 구성
  3. CallbackHandler

auth.login.defaultCallbackHandler 등의 시큐리티 프로퍼티은,java.security.Security 클래스를 사용해 프로그램으로부터 설정하는지, <JAVA_HOME>/lib/security/java.security 파일에 포함되고 있는 Java 시큐리티 프로퍼티 파일을 사용해 정적으로 설정할 수 있습니다. < JAVA_HOME> 는, java.home 시스템 프로퍼티의 값을 참조해, JRE 의 인스톨 디렉토리를 나타냅니다.

관련 항목:
Security , AuthPermission , Subject , CallbackHandler , Configuration , LoginModule

생성자 의 개요
LoginContext (String  name)
          이름을 지정해 새로운 LoginContext 를 인스턴스화합니다.
LoginContext (String  name, CallbackHandler  callbackHandler)
          이름과 CallbackHandler 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.
LoginContext (String  name, Subject  subject)
          이름과 Subject 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.
LoginContext (String  name, Subject  subject, CallbackHandler  callbackHandler)
          이름, 인증을 받는 Subject 객체, 및 CallbackHandler 객체를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.
LoginContext (String  name, Subject  subject, CallbackHandler  callbackHandler, Configuration  config)
          이름, 인증을 받는 Subject 객체,CallbackHandler 객체, 및 로그인 Configuration 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.
 
메소드의 개요
 Subject getSubject ()
          인증된 Subject 를 돌려줍니다.
 void login ()
          인증을 실행합니다.
 void logout ()
          Subject 를 로그아웃 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

LoginContext

public LoginContext(String  name)
             throws LoginException 
이름을 지정해 새로운 LoginContext 를 인스턴스화합니다.

파라미터:
name - Configuration 의 인덱스로서 사용되는 이름
예외:
LoginException - 호출측에서 지정된 nameConfiguration 에 없고, 「other」의 Configuration 엔트리가 없는 경우, 또는 auth.login.defaultCallbackHandler 시큐리티 프로퍼티이 설정되어 있는 것에도 불구하고, 구현 클래스를 로드할 수 없었던 경우

SecurityException - SecurityManager 가 설정되어 있어, 호출측이 AuthPermission("createLoginContext. name")를 가지지 않는 경우, 또는 name 의 구성 엔트리가 존재하지 않고, 호출측이 AuthPermission("createLoginContext.other")를 가지지 않는 경우

LoginContext

public LoginContext(String  name,
                    Subject  subject)
             throws LoginException 
이름과 Subject 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.

파라미터:
name - Configuration 의 인덱스로서 사용되는 이름

subject - 인증 대상의 Subject
예외:
LoginException - 호출측에서 지정된 nameConfiguration 에 없고, 「other」라고 하는 Configuration 엔트리가 없는 경우, 호출측에서 지정된 subject 가 null 의 경우, 혹은,auth.login.defaultCallbackHandler 시큐리티 프로퍼티이 설정되어 있는 것에도 불구하고, 구현 클래스를 로드할 수 없었던 경우

SecurityException - SecurityManager 가 설정되어 있어, 호출측이 AuthPermission("createLoginContext. name")를 가지지 않는 경우, 또는 name 의 구성 엔트리가 존재하지 않고, 호출측이 AuthPermission("createLoginContext.other")를 가지지 않는 경우

LoginContext

public LoginContext(String  name,
                    CallbackHandler  callbackHandler)
             throws LoginException 
이름과 CallbackHandler 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.

파라미터:
name - Configuration 의 인덱스로서 사용되는 이름

callbackHandler - LoginModule 가 사용자와 교환하기 위해서(때문에) 사용하는 CallbackHandler 객체
예외:
LoginException - 호출측에서 지정된 nameConfiguration 에 없고, 「other」의 Configuration 엔트리가 없는 경우, 또는 호출해 옆에서 지정된 callbackHandlernull 의 경우

SecurityException - SecurityManager 가 설정되어 있어, 호출측이 AuthPermission("createLoginContext. name")를 가지지 않는 경우, 또는 name 의 구성 엔트리가 존재하지 않고, 호출측이 AuthPermission("createLoginContext.other")를 가지지 않는 경우

LoginContext

public LoginContext(String  name,
                    Subject  subject,
                    CallbackHandler  callbackHandler)
             throws LoginException 
이름, 인증을 받는 Subject 객체, 및 CallbackHandler 객체를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.

파라미터:
name - Configuration 의 인덱스로서 사용되는 이름

subject - 인증 대상의 Subject

callbackHandler - LoginModule 가 사용자와 교환하기 위해서(때문에) 사용하는 CallbackHandler 객체
예외:
LoginException - 호출측에서 지정된 nameConfiguration 에 없고, 「other」의 Configuration 엔트리가 없는 경우, 호출측에서 지정된 subjectnull 의 경우, 또는 호출해 옆에서 지정된 callbackHandlernull 의 경우

SecurityException - SecurityManager 가 설정되어 있어, 호출측이 AuthPermission("createLoginContext. name")를 가지지 않는 경우, 또는 name 의 구성 엔트리가 존재하지 않고, 호출측이 AuthPermission("createLoginContext.other")를 가지지 않는 경우

LoginContext

public LoginContext(String  name,
                    Subject  subject,
                    CallbackHandler  callbackHandler,
                    Configuration  config)
             throws LoginException 
이름, 인증을 받는 Subject 객체,CallbackHandler 객체, 및 로그인 Configuration 를 지정해, 새로운 LoginContext 객체를 인스턴스화합니다.

파라미터:
name - 호출측에서 지정된 Configuration 의 인덱스로서 사용되는 이름

subject - 인증 대상의 Subject, 또는 null

callbackHandler - LoginModule 가 사용자와의 주고받아에 사용하는 CallbackHandler 객체, 또는 null

config - 인증을 실시하기 위해서(때문에) 불려 가는 로그인 모듈을 리스트 하는 Configuration, 또는 null
예외:
LoginException - 호출측에서 지정된 nameConfiguration 에 존재하지 않고, 「other」의Configuration 엔트리가 없는 경우

SecurityException - SecurityManager 가 설정되어 있어,confignull 로, 한편 호출해 옆이 AuthPermission("createLoginContext. name")를 가지지 않는 경우, 또는 name 의 구성 엔트리가 존재하지 않고, 호출측이 AuthPermission("createLoginContext.other")를 가지지 않는 경우
도입된 버젼:
1.5
메소드의 상세

login

public void login()
           throws LoginException 
인증을 실행합니다.

이 메소드는, 로그인 Configuration 의 정의에 따라,LoginContext 생성자 으로 지정된 name 용으로 설정된 각 LoginModule 에 대해서 login 메소드를 호출합니다. 그러자(면), 각 LoginModule 에 의해, 각종 인증 (사용자명/패스워드의 인증, 스마트 카드의 PIN 인증등)이 실행됩니다.

이 메소드에서는, LoginContext 의 인증 전체가 성공했을 경우 (관련하는 REQUIRED, REQUISITE, SUFFICIENT, OPTIONAL 의 LoginModule 이 성공)에 구성 끝난 LoginModule 에 대해서 commit 메소드를 호출하는지, 인증 전체가 실패했을 경우에 구성 끝난 각 LoginModule 에 대해서 abort 메소드를 호출하는 것으로, 2 국면의 인증 프로세스가 완료합니다. 인증에 성공했을 경우는, 성공한 각 LoginModule 의 commit 메소드에 의해, 관련하는 Principal 와 Credential 가,Subject 와 관련지을 수 있습니다. 인증에 실패했을 경우는, 각 LoginModule 의 abort 메소드에 의해, 일단 보존되고 있던 상태를 삭제 또는 파기합니다.

인증 프로세스의 commit 국면에 실패하면(자) 인증 전체가 실패해, 이 메소드는 구성 끝난 각 LoginModule 에 대해서 abort 메소드를 호출합니다.

어떠한 이유로써 abort 국면이 실패해도,login 국면중이나 commit 국면중에 throw 된 원의 예외를 전달합니다. 어느 쪽의 경우도, 인증 전체가 실패합니다.

복수의 LoginModule 으로 실패했을 경우, 최초로 실패한 LoginModule 로 발생한 예외를 전달합니다.

이 메소드가 abort 국면에 들어갔을 (login 국면이나 commit 국면에 실패할) 경우, 어플리케이션용으로 구성된 모든 LoginModule 가, 각각의 Configuration 플래그 파라미터와는 관계없이 불려 갑니다. 즉,abort 국면중은,RequisiteSufficient 의 시멘틱스는 무시됩니다. 이것에 의해, 적절한 클린 업과 상태의 복원을 실시하는 것이 보증됩니다.

예외:
LoginException - 인증에 실패했을 경우

logout

public void logout()
            throws LoginException 
Subject 를 로그아웃 합니다.

이 메소드는, 이 LoginContext 용으로 구성된 각 LoginModulelogout 메소드를 호출합니다. 각 LoginModule 는, 각각의 로그아웃 처리를 실시합니다. 로그아웃 처리에는,Subject 로부터의 PrincipalCredential 의 삭제/파기나, 상태의 클린 업등이 포함됩니다.

이 메소드에서는, 어플리케이션용으로 구성된 모든 LoginModule 가, 각각의 Configuration 플래그 파라미터에 관계없이 불려 갑니다. 즉, 이 메소드에서는,RequisiteSufficient 의 시멘틱스는 무시됩니다. 이것에 의해, 적절한 클린 업과 상태의 복원을 실시하는 것이 보증됩니다.

예외:
LoginException - 로그아웃에 실패했을 경우

getSubject

public Subject  getSubject()
인증된 Subject 를 돌려줍니다.

반환값:
인증이 끝난 Subject. 호출측이 이 LoginContext 의 생성자 에 Subject 를 지정했을 경우, 이 메소드는 호출해 옆에서 지정된 Subject 를 돌려준다. Subject 가 지정되지 않고, 인증이 성공했을 경우, 이 메소드는, 인스턴스화 되어 이 LoginContext 에 의한 인증에 사용되는 Subject 를 돌려준다. Subject 가 지정되지 않고, 인증이 실패했을 경우, 또는 인증을 하지 않았던 경우, 이 메소드는 null 를 돌려준다

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 도 참조해 주세요.