Straightening out imports and dependencies for better use in identity and provisioner.
diff --git a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
index f0ab242..7e23f49 100644
--- a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
+++ b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/ExampleConfiguration.java
@@ -28,7 +28,7 @@
@Configuration
@EnableAutoConfiguration
@EnableTenantContext
-@EnableAnubis(storeTenantKeysAtInitialization = false)
+@EnableAnubis(provideSignatureStorage = false)
@EnableServiceException
@ComponentScan({
"io.mifos.anubis.example.nokeystorage"
diff --git a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
index c74903f..679d4e3 100644
--- a/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
+++ b/component-test/src/main/java/io/mifos/anubis/example/nokeystorage/SpecialTenantSignatureRepository.java
@@ -63,4 +63,21 @@
final Optional<ApplicationSignatureSet> sigset = Optional.ofNullable(applicationSignatureSetMap.get(timestamp));
return sigset.map(ApplicationSignatureSet::getApplicationSignature);
}
+
+ @Override
+ public Optional<ApplicationSignatureSet> getLatestSignatureSet() {
+ Optional<String> timestamp = getMostRecentTimestamp();
+ return timestamp.flatMap(this::getSignatureSet);
+ }
+
+ @Override
+ public Optional<Signature> getLatestApplicationSignature() {
+ Optional<String> timestamp = getMostRecentTimestamp();
+ return timestamp.flatMap(this::getApplicationSignature);
+ }
+
+ private Optional<String> getMostRecentTimestamp() {
+ return getAllSignatureSetKeyTimestamps().stream()
+ .max(String::compareTo);
+ }
}
diff --git a/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java b/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
index 7da83f3..2d5c6c7 100644
--- a/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
+++ b/library/src/main/java/io/mifos/anubis/config/AnubisImportSelector.java
@@ -55,24 +55,30 @@
classesToImport.add(GuestAuthenticator.class);
classesToImport.add(PermittableRestController.class);
- classesToImport.add(SignatureRestController.class);
classesToImport.add(PermittableService.class);
- final boolean storeTenantKeysAtInitialization = (boolean)importingClassMetadata
- .getAnnotationAttributes(EnableAnubis.class.getTypeName())
- .get("storeTenantKeysAtInitialization");
+ final boolean provideSignatureRestController = (boolean)importingClassMetadata
+ .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+ .get("provideSignatureRestController");
+ final boolean provideSignatureStorage = (boolean) importingClassMetadata
+ .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+ .get("provideSignatureStorage");
+ final boolean generateEmptyInitializeEndpoint = (boolean)importingClassMetadata
+ .getAnnotationAttributes(EnableAnubis.class.getTypeName())
+ .get("generateEmptyInitializeEndpoint");
- if (storeTenantKeysAtInitialization) {
- classesToImport.add(SignatureCreatorRestController.class);
+ if (provideSignatureRestController) {
+ classesToImport.add(SignatureRestController.class);
+
+ if (provideSignatureStorage)
+ classesToImport.add(SignatureCreatorRestController.class);
+ }
+
+ if (provideSignatureStorage)
classesToImport.add(TenantAuthorizationDataRepository.class);
- final boolean generateEmptyInitializeEndpoint = (boolean)importingClassMetadata
- .getAnnotationAttributes(EnableAnubis.class.getTypeName())
- .get("generateEmptyInitializeEndpoint");
-
- if (generateEmptyInitializeEndpoint)
- classesToImport.add(EmptyInitializeResourcesRestController.class);
- }
+ if (generateEmptyInitializeEndpoint)
+ classesToImport.add(EmptyInitializeResourcesRestController.class);
return classesToImport.stream().map(Class::getCanonicalName).toArray(String[]::new);
diff --git a/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java b/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
index 9eb6fee..555e6fb 100644
--- a/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
+++ b/library/src/main/java/io/mifos/anubis/config/EnableAnubis.java
@@ -29,6 +29,7 @@
AnubisSecurityConfigurerAdapter.class
})
public @interface EnableAnubis {
- boolean storeTenantKeysAtInitialization() default true;
+ boolean provideSignatureRestController() default true;
+ boolean provideSignatureStorage() default true;
boolean generateEmptyInitializeEndpoint() default false;
}
diff --git a/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java b/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
index de6b1eb..5ab3d40 100644
--- a/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
+++ b/library/src/main/java/io/mifos/anubis/config/TenantSignatureRepository.java
@@ -35,7 +35,11 @@
Optional<ApplicationSignatureSet> getSignatureSet(String timestamp);
+ Optional<ApplicationSignatureSet> getLatestSignatureSet();
+
void deleteSignatureSet(String timestamp);
Optional<Signature> getApplicationSignature(String timestamp);
+
+ Optional<Signature> getLatestApplicationSignature();
}
diff --git a/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java b/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
index 33f1248..205ea0f 100644
--- a/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
+++ b/library/src/main/java/io/mifos/anubis/controller/SignatureRestController.java
@@ -72,8 +72,7 @@
public
@ResponseBody ResponseEntity<ApplicationSignatureSet> getLatestSignatureSet()
{
- final Optional<String> timestamp = getMostRecentTimestamp();
- return timestamp.flatMap(tenantSignatureRepository::getSignatureSet)
+ return tenantSignatureRepository.getLatestSignatureSet()
.map(ResponseEntity::ok)
.orElseThrow(() -> ServiceException.notFound("No valid signature found."));
}
@@ -108,14 +107,8 @@
public
@ResponseBody ResponseEntity<Signature> getLatestApplicationSignature()
{
- final Optional<String> timestamp = getMostRecentTimestamp();
- return timestamp.flatMap(tenantSignatureRepository::getApplicationSignature)
+ return tenantSignatureRepository.getLatestApplicationSignature()
.map(ResponseEntity::ok)
.orElseThrow(() -> ServiceException.notFound("No valid signature found."));
}
-
- private Optional<String> getMostRecentTimestamp() {
- return tenantSignatureRepository.getAllSignatureSetKeyTimestamps().stream()
- .max(String::compareTo);
- }
}
\ No newline at end of file
diff --git a/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java b/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
index c6e5c9e..d07aed7 100644
--- a/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
+++ b/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
@@ -111,11 +111,6 @@
return new Signature(applicationSignature.getPublicKeyMod(), applicationSignature.getPublicKeyExp());
}
- public Optional<ApplicationSignatureSet> getSignatureSet(final String timestamp) {
- Assert.notNull(timestamp);
- return getRow(timestamp).map(TenantAuthorizationDataRepository::mapRowToSignatureSet);
- }
-
public void deleteSignatureSet(final String timestamp) {
Assert.notNull(timestamp);
//Don't actually delete, just invalidate, so that if someone starts coming at me with an older keyset, I'll
@@ -303,4 +298,26 @@
.map(x -> x.get(TIMESTAMP_COLUMN, String.class))
.collect(Collectors.toList());
}
+
+ public Optional<ApplicationSignatureSet> getSignatureSet(final String timestamp) {
+ Assert.notNull(timestamp);
+ return getRow(timestamp).map(TenantAuthorizationDataRepository::mapRowToSignatureSet);
+ }
+
+ @Override
+ public Optional<ApplicationSignatureSet> getLatestSignatureSet() {
+ Optional<String> timestamp = getMostRecentTimestamp();
+ return timestamp.flatMap(this::getSignatureSet);
+ }
+
+ @Override
+ public Optional<Signature> getLatestApplicationSignature() {
+ Optional<String> timestamp = getMostRecentTimestamp();
+ return timestamp.flatMap(this::getApplicationSignature);
+ }
+
+ private Optional<String> getMostRecentTimestamp() {
+ return getAllSignatureSetKeyTimestamps().stream()
+ .max(String::compareTo);
+ }
}
\ No newline at end of file