JAVA
JAVA CallbackHandler 인터페이스 사용(feat. Callback 인터페이스)
선즈반
2018. 7. 4. 17:50
CallbackHandler 정의
1 2 3 4 5 6 | 어떤한 경우에는 LoginModule이 인증 정보를 얻기 위해 사용자와 반드시 커뮤니케이션 해야 합니다. LoginModule들은 이 목적으로 javax.security.auth.callback.CallbackHandler를 사용합니다. Application은 com.sun.security.auth.callback 패키지에서 제공되는 샘플 구현체 중 하나를 사용하거나 보다 일반적으로 사용되는 CallbackHandler 구현체 중 하나를 사용할 수 있습니다. Application은 LoginContext 인스턴스에 인자로서 CallbackHandler를 건네줍니다. LoginContext는 하위 LoginModule들에게 CallbackHandler를 직접 전송합니다. |
CallbackHandler는 handle 메소드를 사용해서 Callback 클래스들을 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // 기본 모양 void handle(Callback[] callbacks) throws java.io.IOException, UnsupportedCallbackException; // handle이 구현되는 예시 public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof TextOutputCallback) { // display a message according to a specified type . . . } else if (callbacks[i] instanceof NameCallback) { // prompt the user for a username . . . } else if (callbacks[i] instanceof PasswordCallback) { // prompt the user for a password . . . } else { throw new UnsupportedCallbackException (callbacks[i], "Unrecognized Callback"); } } } // 사용 예 NameCallback nameCallback = new NameCallback("User name: "); PasswordCallback passwordCallback = new PasswordCallback("Password: ", true); callbackHandler.handle(new Callback[] { nameCallback, passwordCallback }); |
Callback 정의
1 2 3 4 5 6 7 | CallbackHandler에 전달된 Callback 인터페이스의 구현은 기본 보안 서비스에서 호출 응용 프로그램과 상호 작용하여 사용자 이름 및 암호와 같은 특정 인증 데이터를 검색하거나 오류 및 경고 메시지와 같은 특정 정보를 표시 할 수 있습니다. Callback 구현은 기본 보안 서비스에서 요청한 정보를 검색하거나 표시하지 않습니다. Callback 구현은 단순히 이러한 요청을 applications에 전달하고 필요한 경우 applications이 요청 된 정보를 기본 보안 서비스로 반환하는 수단을 제공합니다. |
참고사이트
1 |