Ich habe einige Forschung über Drop-Wizard Sicherheit und Authentifizierung. Hier ist der Link, den ich http://howtodoinjava.com/dropwizard/dropwizard-basic-auth-security-example/ verwendet habe.Dropwizard auth Benutzer
Meine Frage ist, wie Sie wirklich neue Benutzer erstellen, da VALID_USERS ein statisches Finale ist und nicht geändert werden kann. Ich dachte darüber nach, eine Datenbank zu erstellen, und das würde aus einem Benutzerobjekt bestehen, das den Benutzernamen und die Rolle ex enthält. Administrator. (Ich brauche kein Passwort) Aber ich bin verwirrt, was ich zurückgeben würde. In ihrem Beispiel gaben sie Optional.of zurück (neuer Benutzer (credentials.getUsername(), VALID_USERS.get (credentials.getUsername()))); Würde ich ein Benutzerobjekt zurückgeben?
Im Wesentlichen möchte ich einen Benutzer mit dem Benutzernamen authentifizieren und ihnen eine Rolle der Berechtigung ex geben. Admin, grundlegend. Aber ich glaube, ich bin verwirrt, wie man eine Liste von Benutzern und ihren Rollen erzeugt. Ich dachte daran, eine Datenbank zu erstellen, aber ich bin mir nicht sicher, wie genau ich das umsetzen würde.
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();
}
}
Hey Vielen Dank! Ich fand Ihr Beispiel sehr nützlich. Eine Frage, die ich hatte, war, zwei Ebenen von Benutzern, Admin und Gast, zu erstellen, die unterschiedliche Berechtigungen hätten. Kannst du mir ein paar Tipps geben, wie das geht? – Bob
Die Idee ist, dass Sie eine Sammlung von Strings in Ihren Benutzerobjekten verwenden können; Strings sind eigentlich Rollen. JPA/Hibernate ermöglicht dies (http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#collections-value). Danach sollten Sie einen Authorizer implementieren, ein Beispiel aus dem Dropwizard-Projekt ist unten und registrieren Sie sich in der run() -Methode der Anwendungsklasse. Danach können Sie Ihre Methoden mit @RolesAllowed-Annotation sichern, wobei Sie eine durch Kommas getrennte Liste von Rollen wie @RolesAllowed ("ADMIN") bereitstellen. – javaeeeee
public class ExampleAuthorizer implementiert Authorizer { @Override public boolean autorisieren (Benutzer Benutzer, String Rolle) { return user.getRoles() = null && user.getRoles() enthält (Rolle)!. } } Dies ist ein Autorizer von DropWizard Beispielanwendung. –
javaeeeee