根据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");
    }
  }
}

09-26 02:23