Я пытаюсь понять, как работают аутентификация и авторизация в DropWizard. Я прочитал их auth guide, а также dropwizard-security проект на GitHub, но чувствую, что мне все еще не хватает нескольких важных концепций.
public class SimpleCredential {
private String password;
public SimpleCredential(String password) {
super();
this.password = password;
}
}
public class SimplePrincipal {
pivate String username;
public SimplePrincipal(String username) {
super();
this.username = username;
}
}
public class SimpleAuthenticator implements Authenticator<SimpleCredential, SimplePrincipal> {
@Override
public Optional<SimplePrincipal> authenticate(SimpleCredential credential) throws AuthenticationException {
if(!"12345".equals(credential.getPassword())) {
throw new AuthenticationException("Sign in failed.");
}
Optional.fromNullable(new SimplePrincipal("simple_user"));
}
}
И затем в моем подклассе Application
:
@Override
public void run(BackendConfiguration configuration, Environment environment) throws Exception {
environment.jersey().register(new BasicAuthProvider<SimplePrincipal>(new SimpleAuthenticator(), "SUPER SECRET STUFF"));
}
И затем в методе ресурса:
@GET
@Path("address/{address_id}")
@Override
public Address getAddress(@Auth @PathParam("address_id") Long id) {
addressDao.getAddressById(id);
}
Я думаю, что я правильно настроил эту настройку для базового auth, но не понял роль, которую играют SimpleCredential
и SimplePrincipal
. В частности:
- Как установить базовое имя пользователя/пароль auth от клиента Jersey/JAX-RS?
- Какую роль играют
SimpleCredential
иSimplePrincipal
с базовым auth? Нужно ли добавлять что-либо к ним или другим классам, чтобы сделать базовую работу с auth, так что единственным действительным именем пользователя являетсяsimple_user
, а единственным допустимым паролем является12345
? - Как мне обеспечить доступ/авторизовать/роли через
SimplePrincipal
? Или концепция авторизации отсутствует в веб-службах?