使用Keyclock时,我遇到了JAAS登录上下文传播的问题。从Message Driven Bean执行以下代码以作为应用程序MDB用户登录。
loginContext = new LoginContext("keycloak", new CallbackHandler() {
@Override
public void handle(Callback[] callbacks) {
int len = callbacks.length;
Callback cb;
for (int i = 0; i < len; i++) {
cb = callbacks[i];
if (cb instanceof NameCallback) {
NameCallback ncb = (NameCallback) cb;
ncb.setName(mdbuserName);
} else if (cb instanceof PasswordCallback) {
PasswordCallback pcb = (PasswordCallback) cb;
pcb.setPassword(mdbUserPass);
}
}
}
});
loginContext.login();
在我检查校长后,我得到了匿名!
Principal p = ctx.getCallerPrincipal();
这个问题有解决方法吗?