安全领域授权一次登录尝试

时间:2011-07-19 12:31:06

标签: java security glassfish ejb

我正在使用带有ejb 3.0的glassfish 3.1.1和一个swing客户端,我已经配置了一个jdbc领域用于安全目的。 一切正常,除了一件事,如果用户未能记录(错误的登录或密码),登录对话框永远不再显示,客户端自动将旧的登录名/密码发送到服务器。 我怎样才能解决这个问题 ? 感谢。

编辑此身份验证处理程序的代码

public class ociCallBackHandler implements javax.security.auth.callback.CallbackHandler {

public void handle(Callback[] callbacks) {
    try {


        String login = null;
        char[] mdp = null;

        while (login == null || login.length() < 2) {
            ArrayList out = GuiLogin.getLogin();

            login = (String) out.get(0);

            mdp = (char[]) out.get(1);
        }

        for (int i = 0; i < callbacks.length; i++) {
            System.out.println("dans boucle");
            if (callbacks[i] instanceof TextOutputCallback) {
                // display the message according to the specified type
                TextOutputCallback toc = (TextOutputCallback) callbacks[i];
                switch (toc.getMessageType()) {
                    case TextOutputCallback.INFORMATION:
                        System.out.println("info");
                        System.out.println(toc.getMessage());

                        break;
                    case TextOutputCallback.ERROR:
                        System.out.println("error");
                        System.out.println("ERROR: " + toc.getMessage());
                        break;
                    case TextOutputCallback.WARNING:
                        System.out.println("warning");
                        System.out.println("WARNING: " + toc.getMessage());
                        break;
                    default:
                        System.out.println("inconuue");
                        throw new IOException("Unsupported message type: "
                                + toc.getMessageType());
                }
            } else if (callbacks[i] instanceof TextInputCallback) {
                System.out.println("textINputCallback");
                TextInputCallback tic = (TextInputCallback) callbacks[i];
                System.err.print(tic.getPrompt());
                System.err.flush();
                tic.setText("read");
            } else if (callbacks[i] instanceof NameCallback) {
                // prompt the user for a username
                NameCallback nc = (NameCallback) callbacks[i];


                nc.setName(login);
            } else if (callbacks[i] instanceof PasswordCallback) {
                // prompt the user for sensitive information
                PasswordCallback pc = (PasswordCallback) callbacks[i];


                pc.setPassword(mdp);


            } else {
                throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
            }
        }

    } catch (Exception e) {
        System.out.println("exceptionn");
        System.out.println(e);
    }

}

}

0 个答案:

没有答案
相关问题