Apache Tomcat 1.7如何将其他参数传递给JAAS

yap*_*m01 9 tomcat jaas java-ee tomcat7

根据Apache Tomcat 1.7文档:

编写自己的基于JAAS的LoginModule,User和Role类(参见JAAS Authentication Tutorial和JAAS Login Module Developer's Guide),由JAAS登录上下文管理(javax.security.auth.login.LoginContext)开发LoginModule时,请注意,JAASRealm的内置Call​​backHandler目前仅识别NameCallback和PasswordCallback.

它只支持NameCallback和PasswordCallback.我想将其他参数传递给JAAS登录模块但由于此限制而无法传递.

如何将其他参数传递给JAAS登录模块?

Ali*_*chi 1

编写您自己的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");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)