|
@@ -22,6 +22,9 @@ import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.http.FilterContainer;
|
|
|
import org.apache.hadoop.http.FilterInitializer;
|
|
|
|
|
|
+import java.io.FileReader;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.Reader;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -40,8 +43,10 @@ import java.util.Map;
|
|
|
*/
|
|
|
public class AuthenticationFilterInitializer extends FilterInitializer {
|
|
|
|
|
|
- private static final String PREFIX = "hadoop.http.authentication.";
|
|
|
+ static final String PREFIX = "hadoop.http.authentication.";
|
|
|
|
|
|
+ static final String SIGNATURE_SECRET_FILE = AuthenticationFilter.SIGNATURE_SECRET + ".file";
|
|
|
+
|
|
|
/**
|
|
|
* Initializes Alfredo AuthenticationFilter.
|
|
|
* <p/>
|
|
@@ -67,6 +72,25 @@ public class AuthenticationFilterInitializer extends FilterInitializer {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ String signatureSecretFile = filterConfig.get(SIGNATURE_SECRET_FILE);
|
|
|
+ if (signatureSecretFile == null) {
|
|
|
+ throw new RuntimeException("Undefined property: " + SIGNATURE_SECRET_FILE);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ StringBuilder secret = new StringBuilder();
|
|
|
+ Reader reader = new FileReader(signatureSecretFile);
|
|
|
+ int c = reader.read();
|
|
|
+ while (c > -1) {
|
|
|
+ secret.append((char)c);
|
|
|
+ c = reader.read();
|
|
|
+ }
|
|
|
+ reader.close();
|
|
|
+ filterConfig.put(AuthenticationFilter.SIGNATURE_SECRET, secret.toString());
|
|
|
+ } catch (IOException ex) {
|
|
|
+ throw new RuntimeException("Could not read HTTP signature secret file: " + signatureSecretFile);
|
|
|
+ }
|
|
|
+
|
|
|
container.addFilter("authentication",
|
|
|
AuthenticationFilter.class.getName(),
|
|
|
filterConfig);
|