根据Apache Tomcat 1.7文档:
它仅支持NameCallback和PasswordCallback。我想将其他参数传递给JAAS登录模块,但是由于此限制而无法传递。
如何将其他参数传递给JAAS登录模块?
最佳答案
编写自己的CallbackHandler。有关详细信息,请参见http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/tutorials/GeneralAcnOnly.html
例如,一个MyCallbackHandler可以支持附加的 TextOutputCallback
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");
}
}
}