2010-03-02 3 views
1

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

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

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

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

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

Работает на weblogic, любые указатели?

Благодаря

ответ

1

Похожий вопрос ... Я тестирую с клиента CERT вместе с пользовательской 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 ссылается на последнее как на принципала, поскольку это может быть другое имя пользователя/пароль.

+0

Стив, пожалуйста, объясните эту строку, я буду вам очень благодарен. Исправлено установкой имени пользователя/пароля в поиске InitialContext внутри PrivilegedAction' –

+0

См. Пример 17-3 http://www.onjava.com /pub/a/onjava/excerpt/weblogic_chap17/index1.html?page=5. Есть интересный пункт, в котором говорится, что не предоставлять учетные данные пользователя. Некоторое время назад, но когда я протестировал, я не смог получить доступ к главному в EJB, явно не предоставив их в InitialContext. Таким образом, вы добавили бы что-то вроде строк, которые я прокомментировал выше, в примере 17-3. HTH –

+0

Спасибо, я понял, это специфический код WebLogic. На самом деле я пытался получить доступ к EJB, работающему на Glassfish, из автономного приложения (из с в Eclipse). Мне удалось аутентифицировать клиента, но эта информация не распространяется на EJB. Он остается анонимным. В любом случае, спасибо вам большое. –

Смежные вопросы