Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/auth/plain/Authenticator.java @ 2959:5ba0a6efdf3b
Auth: added simple file based authentication.
flys-client/trunk@4939 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 11 Jul 2012 14:53:33 +0000 |
parents | |
children | 98514ab2c9ba |
line wrap: on
line source
package de.intevation.flys.client.server.auth.plain; import de.intevation.flys.client.server.auth.AuthenticationException; import de.intevation.flys.client.server.auth.DefaultUser; import de.intevation.flys.client.server.auth.User; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class Authenticator implements de.intevation.flys.client.server.auth.Authenticator { public static class Authentication implements de.intevation.flys.client.server.auth.Authentication { protected String user; protected String password; public Authentication(String user, String password) { this.user = user; this.password = password; } @Override public boolean isSuccess() { return user != null; } @Override public User getUser() { return isSuccess() ? new DefaultUser(user, password, false) : null; } } // class Authentication public Authenticator() { } private static File credentialsFile() { String env = System.getenv("FLYS_USER_FILE"); if (env == null) { env = System.getProperty( "flys.user.file", System.getProperty("user.home", ".") + System.getProperty("file.separator") + "flys_user_file"); } return new File(env); } @Override public de.intevation.flys.client.server.auth.Authentication auth( String username, String password, String encoding ) throws AuthenticationException, IOException { File file = credentialsFile(); if (!file.canRead() || !file.isFile()) { return new Authentication(null, null); } BufferedReader reader = new BufferedReader( new FileReader(file)); try { String line; while ((line = reader.readLine()) != null) { if ((line = line.trim()).length() == 0 || line.startsWith("#")) { continue; } String [] parts = line.split("\\s+"); // TODO: role? if (parts.length < 2) { continue; } if (parts[0].equals(username)) { if (parts[1].equals(password)) { return new Authentication(username, password); } // Stop: user found, wrong password break; } } } finally { reader.close(); } return new Authentication(null, null); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :