Доступ к клиентскому принципалу внутри метода ejb - PullRequest
1 голос
/ 02 марта 2010

Мне нужно получить доступ к клиенту (имя пользователя) внутри метода ejb. Я не хочу добавлять его в качестве параметра. Попытался добавить их в объект Context, как;

prop.add(Context.SECURITY_AUTHENTICATION,"user")
prop.add(Context.SECURITY_CREDENTIALS,"pass")

но пытается получить к ним доступ внутри метода, как; @Ресурс private SessionContext ctx;

public void someMethod() {
    Principal principal = ctx.getCallerPrincipal();
    //returns anonymous

все еще дайте мне раздражающего пользователя.

Работаете над weblogic, какие-нибудь указатели?

Спасибо

1 Ответ

1 голос
/ 30 января 2011

Аналогичная проблема ... Я тестирую с клиентским сертификатом вместе с пользовательским UserNameMapper. Мой UserNameMapper возвращает «steve», но принципал в EJB возвращал "<anonymous>", пока я не добавил пользователя «steve» через консоль.

Environment env = new Environment();
env.setInitialContextFactory(Environment.DEFAULT_INITIAL_CONTEXT_FACTORY);
//  env.setSecurityPrincipal("user");
//  env.setSecurityCredentials("pass");
env.setProviderUrl("t3s://localhost:7002");

InputStream key = new PEMInputStream(new FileInputStream(CERT_KEYFILE));
InputStream cert = new PEMInputStream(new FileInputStream(CERT_CERTFILE));
env.setSSLClientCertificate(new InputStream[] {key, cert});
env.setSSLClientKeyPassword(CERT_KEYPASSWORD);

Та же проблема при использовании клиента JAAS с модулем UsernamePasswordLoginModule. Исправлено путем установки имени пользователя / пароля в поиске InitialContext в PrivilegedAction. EJB ссылается на последний как принципал, так как это может быть другое имя пользователя / пароль.

...