Я занимался некоторыми исследованиями в области безопасности и проверки подлинности с помощью Drop-Wizard. Вот ссылка, которую я использовал http://howtodoinjava.com/dropwizard/dropwizard-basic-auth-security-example/.Пользователи с полномочиями Dropwizard
Мой вопрос в том, как создавать новых пользователей, поскольку VALID_USERS является статическим финалом и не может быть изменен. Я думал о создании базы данных и состоял бы из пользовательского объекта, который содержит имя пользователя и роль ex. админ. (Мне не нужен пароль) Но я смущен тем, что я верну. В их примере они возвратили Optional.of (новый пользователь (credentials.getUsername(), VALID_USERS.get (credentials.getUsername()))); Могу ли я вернуть объект пользователя?
По сути, я хочу, чтобы аутентифицировать пользователя по имени пользователя и предоставить им роль авторизации ex. admin, basic. Но я думаю, я смущен, как создать список пользователей и их роли. Я думал о создании базы данных, но я не уверен, как именно я это реализую.
public class AppBasicAuthenticator implements Authenticator<BasicCredentials, User>
{
private static final Map<String, Set<String>> VALID_USERS = ImmutableMap.of(
"guest", ImmutableSet.of(),
"user", ImmutableSet.of("USER"),
"admin", ImmutableSet.of("ADMIN", "USER")
);
@Override
public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException
{
if (VALID_USERS.containsKey(credentials.getUsername()) && "password".equals(credentials.getPassword()))
{
return Optional.of(new User(credentials.getUsername(), VALID_USERS.get(credentials.getUsername())));
}
return Optional.empty();
}
}
Привет Большое спасибо! Я нашел ваш пример действительно полезным. Один из моих вопросов заключался в том, как создать два уровня пользователей, Admin и гость, которые будут иметь разные разрешения. Не могли бы вы дать мне несколько советов о том, как это сделать? – Bob
Идея состоит в том, что вы можете использовать коллекцию строк в своих пользовательских объектах; строки фактически являются ролями. JPA/Hibernate позволяет это сделать (http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#collections-value). После этого вы должны реализовать Авторизатор, пример из проекта Dropwizard приведен ниже и зарегистрировать в методе run() класса приложения. После этого вы можете защитить свои методы с помощью @RolesAllowed аннотации, где вы предоставляете список ролей, подобный запятой, например @RolesAllowed («ADMIN»). – javaeeeee
общественный класс ExampleAuthorizer реализует Authorizer { @Override общественных булевых авторизированный (пользователь User, String роль) { возврата user.getRoles() = NULL && user.getRoles() содержит (роль)!. } } Это авторинсер из примера приложения DropWizard. –
javaeeeee