JAAS自定义登录模块,默认为CallbackHandler

时间:2014-04-25 08:41:59

标签: java jboss jaas

我在JBoss 7上的JAAS中有自定义登录模块,它使用自定义CallbackHandler并实现额外的回调。登录模块的片段:

Callback[] callbacks = new Callback[3];
callbacks[0] = new javax.security.auth.callback.NameCallback(...);
callbacks[1] = new javax.security.auth.callback.PasswordCallback(...);
callbacks[2] = new MyOwnCallback(...);
callbackHandler.handle(callbacks);

要在登录后获取完整信息,aplication需要使用支持MyOwnCallback的MyOwnCallbackHandler。是否可以使用内置的JBoss回调处理程序启用某些基本应用程序的登录,即org.jboss.security.auth.callback.UsernamePasswordHandler而不包括MyOwnCallbackHandler?避免UnsupportedCallbackException的一种可能方法是使用以下方法扩展UsernamePasswordHandler:

@Override
public void handle(Callback[] callbacks) throws UnsupportedCallbackException {  
    ArrayList<Callback> supportedCallbacks = new ArrayList<Callback>(callbacks.length);
    for (Callback c : callbacks) {
        if (c instanceof NameCallback || c instanceof PasswordCallback) {
            supportedCallbacks.add(c);
        }
    }
    super.handle((Callback[]) supportedCallbacks.toArray(new Callback[supportedCallbacks.size()]));
}

但我不想在每个应用程序中实现它或包含任何其他jar。

0 个答案:

没有答案
相关问题