2013-08-23 2 views
0

Текущий подход в мое приложение Java SE является (один раз с проверкой подлинности) магазин только имя пользователя, как свойство системы, которое я понимаю, может иметь последствия для безопасностиJava SE - хранение текущего пользователя детали

Всякий раз, когда действие что требуется определенная роль, это имя пользователя используется для вызова в базу данных, чтобы проверить, имеет ли данный пользователь роль.

Я бы предпочел загружать все роли спереди, а затем проверить какой-либо объект «Пользователь», разрешены ли они для доступа. Тем не менее, все это нужно делать очень контролируемым образом.

Есть ли стандартный подход/рамки для этого? Готов к сведению, что я уже прошел проверку подлинности и просто хочу сохранить данные пользователя. Сохраняет ли текущий пользователь в качестве Singleton разумный способ приблизиться к этому?

ответ

0

Вы можете использовать JAAS для аутентификации и авторизации в своем приложении. Эта структура применима для всех приложений Java (Web, Standalone, Java EE и т. Д.)

Другим вариантом может быть Spring Security. В Spring Security существует класс SecurityContextHolder, где вы можете сохранить статус аутентификации (роли) после аутентификации пользователя. Позже это может быть полезно для проверки роли пользователя при попытке доступа к любой операции. Это не должно быть веб-приложение, вы можете использовать его в java SE.

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); 
authorities.add(new RestUserAuthrity("ROLE_USER")); 
CustomAuthenticationToken authenticationToken = new CustomAuthenticationToken(authorities); 
SecurityContextHolder.getContext().setAuthentication(authenticationToken); 

Во время вызова метода или где вы хотите проверить роль. Просто получите роль от SecurityContextHolder и проверьте соответствующую роль.

+0

JAAS is * not * универсально применим в Java EE. Это очень низкоуровневая система безопасности для базовых грантов на основе кода. –

+0

@MikeBraun, Что такое стандартная безопасность Java EE? Я предлагаю вам глубже проникнуть в JAAS, чтобы посмотреть, что он предоставляет. Это правда, что JAAS он широко не использовал. –

+0

Я выглядел довольно глубоко в JAAS. Это плохое соответствие Java EE. Когда вы входите в модуль входа JAAS, Java EE об этом не знает. Объект в JAAS представляет собой набор принципов, не имеющих стандартного сопоставления ролям Java EE и принципам пользователя. Вы можете интегрировать JAAS в Java EE через JASPIC, но это уменьшает JAAS до довольно немого поставщика роли/роли. –

-1

Я предлагаю вам использовать Spring framework для управления сеансом, а также весну, чтобы вы в настоящее время вошли в список пользователей, после чего вы можете сохранять зарегистрированные пользователи.

+1

Я думаю, что Весна полностью слишком раздута в каркасе, чтобы подталкивать ее, когда все, что ему нужно, это простые функции auth. –

+0

, но если вы используете весеннюю безопасность, это будет очень просто – pravin

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

  • Нет связанных вопросов^_^