Adding logging messages.
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 ef1f118..5d64422 100644
--- a/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
+++ b/library/src/main/java/io/mifos/anubis/repository/TenantAuthorizationDataRepository.java
@@ -27,7 +27,6 @@
 import io.mifos.anubis.config.TenantSignatureRepository;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
 import io.mifos.core.lang.ApplicationName;
-import io.mifos.core.lang.ServiceException;
 import io.mifos.core.lang.security.RsaKeyPairFactory;
 import io.mifos.core.lang.security.RsaPrivateKeyBuilder;
 import io.mifos.core.lang.security.RsaPublicKeyBuilder;
@@ -102,6 +101,9 @@
     Assert.notNull(identityManagerSignature);
 
     //TODO: add validation to make sure this timestamp is more recent than any already stored.
+    logger.info("Creating application signature set for timestamp '" + timestamp +
+            "'. Identity manager signature is: " + identityManagerSignature);
+
     final RsaKeyPairFactory.KeyPairHolder applicationSignature = RsaKeyPairFactory.createKeyPair();
 
     final Session session = cassandraSessionProvider.getTenantSession();
@@ -123,6 +125,7 @@
     Assert.notNull(timestamp);
     //Don't actually delete, just invalidate, so that if someone starts coming at me with an older keyset, I'll
     //know what's happening.
+    logger.info("Invalidationg signature set for timestamp '" + timestamp + "'.");
     final Session session = cassandraSessionProvider.getTenantSession();
     invalidateEntry(session, timestamp);
   }
diff --git a/library/src/main/java/io/mifos/anubis/security/GuestAuthenticator.java b/library/src/main/java/io/mifos/anubis/security/GuestAuthenticator.java
index 533868c..6c9270a 100644
--- a/library/src/main/java/io/mifos/anubis/security/GuestAuthenticator.java
+++ b/library/src/main/java/io/mifos/anubis/security/GuestAuthenticator.java
@@ -18,27 +18,36 @@
 import io.mifos.anubis.annotation.AcceptedTokenType;
 import io.mifos.anubis.api.v1.RoleConstants;
 import io.mifos.anubis.service.PermittableService;
+import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Set;
 
+import static io.mifos.anubis.config.AnubisConstants.LOGGER_NAME;
+
 /**
  * @author Myrle Krantz
  */
 @Component
 public class GuestAuthenticator {
   private Set<ApplicationPermission> permissions;
+  private final Logger logger;
 
   @Autowired
-  public GuestAuthenticator(final PermittableService permittableService) {
+  public GuestAuthenticator(final PermittableService permittableService,
+                            final @Qualifier(LOGGER_NAME) Logger logger) {
     this.permissions = permittableService.getPermittableEndpointsAsPermissions(AcceptedTokenType.GUEST);
+    this.logger = logger;
   }
 
   AnubisAuthentication authenticate(final String user) {
     if (!user.equals(RoleConstants.GUEST_USER_IDENTIFIER))
       throw AmitAuthenticationException.invalidHeader();
 
+    logger.info("Guest access \"authenticated\" successfully.", user);
+
     return new AnubisAuthentication(null, RoleConstants.GUEST_USER_IDENTIFIER, permissions);
   }
 }
diff --git a/library/src/main/java/io/mifos/anubis/security/SystemAuthenticator.java b/library/src/main/java/io/mifos/anubis/security/SystemAuthenticator.java
index 49fd679..6250321 100644
--- a/library/src/main/java/io/mifos/anubis/security/SystemAuthenticator.java
+++ b/library/src/main/java/io/mifos/anubis/security/SystemAuthenticator.java
@@ -62,20 +62,21 @@
   public AnubisAuthentication authenticate(
       final String user,
       final String token,
-      final String timestamp) {
+      final String keyTimestamp) {
     if (!user.equals(ApiConstants.SYSTEM_SU))
       throw AmitAuthenticationException.invalidHeader();
 
     try {
       final JwtParser jwtParser = Jwts.parser()
-          .setSigningKey(systemRsaKeyProvider.getPublicKey(timestamp))
+          .setSigningKey(systemRsaKeyProvider.getPublicKey(keyTimestamp))
           .requireAudience(applicationName.toString())
           .requireIssuer(TokenType.SYSTEM.getIssuer())
-          .require(TokenConstants.JWT_SIGNATURE_TIMESTAMP_CLAIM, timestamp);
+          .require(TokenConstants.JWT_SIGNATURE_TIMESTAMP_CLAIM, keyTimestamp);
 
       TenantContextHolder.identifier().ifPresent(jwtParser::requireSubject);
 
       jwtParser.parse(token);
+      logger.info("System token for user {}, with key timestamp {} authenticated successfully.", user, keyTimestamp);
 
       return new AnubisAuthentication(token, user, permissions);
     }
@@ -83,7 +84,7 @@
       logger.debug("token = {}", token);
       throw AmitAuthenticationException.invalidToken();
     } catch (final InvalidKeyTimestampException e) {
-      throw AmitAuthenticationException.invalidTokenKeyTimestamp("system", timestamp);
+      throw AmitAuthenticationException.invalidTokenKeyTimestamp("system", keyTimestamp);
     }
   }
 }
diff --git a/library/src/main/java/io/mifos/anubis/security/TenantAuthenticator.java b/library/src/main/java/io/mifos/anubis/security/TenantAuthenticator.java
index d604ba3..35e4797 100644
--- a/library/src/main/java/io/mifos/anubis/security/TenantAuthenticator.java
+++ b/library/src/main/java/io/mifos/anubis/security/TenantAuthenticator.java
@@ -26,6 +26,7 @@
 import io.mifos.anubis.service.PermittableService;
 import io.mifos.anubis.token.TokenType;
 import io.mifos.core.lang.ApplicationName;
+import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
@@ -36,6 +37,8 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static io.mifos.anubis.config.AnubisConstants.LOGGER_NAME;
+
 /**
  * @author Myrle Krantz
  */
@@ -45,18 +48,21 @@
   private final String applicationNameWithVersion;
   private final Gson gson;
   private final Set<ApplicationPermission> guestPermissions;
+  private final Logger logger;
 
   @Autowired
   public TenantAuthenticator(
       final TenantRsaKeyProvider tenantRsaKeyProvider,
       final ApplicationName applicationName,
       final PermittableService permittableService,
-      final @Qualifier("anubisGson") Gson gson) {
+      final @Qualifier("anubisGson") Gson gson,
+      final @Qualifier(LOGGER_NAME) Logger logger) {
     this.tenantRsaKeyProvider = tenantRsaKeyProvider;
     this.applicationNameWithVersion = applicationName.toString();
     this.gson = gson;
     this.guestPermissions
         = permittableService.getPermittableEndpointsAsPermissions(AcceptedTokenType.GUEST);
+    this.logger = logger;
   }
 
   AnubisAuthentication authenticate(
@@ -79,6 +85,8 @@
       final Set<ApplicationPermission> permissions = translatePermissions(tokenContent.getTokenPermissions());
       permissions.addAll(guestPermissions);
 
+      logger.info("Tenant token for user {}, with key timestamp {} authenticated successfully.", user, keyTimestamp);
+
       return new AnubisAuthentication(token,
           jwt.getBody().getSubject(), permissions
       );
diff --git a/library/src/main/java/io/mifos/anubis/security/UrlPermissionChecker.java b/library/src/main/java/io/mifos/anubis/security/UrlPermissionChecker.java
index 957279e..6da4d59 100644
--- a/library/src/main/java/io/mifos/anubis/security/UrlPermissionChecker.java
+++ b/library/src/main/java/io/mifos/anubis/security/UrlPermissionChecker.java
@@ -22,6 +22,7 @@
 import org.springframework.security.web.FilterInvocation;
 
 import java.util.Collection;
+import java.util.Optional;
 
 /**
  * @author Myrle Krantz
@@ -48,10 +49,11 @@
     final AnubisAuthentication authentication = (AnubisAuthentication) unAuthentication;
 
     final Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
-    return authorities.stream()
-        .map(x -> (ApplicationPermission)x)
-        .filter(x -> x.matches(filterInvocation, authentication.getPrincipal()))
-        .findAny()
-        .map(x -> ACCESS_GRANTED).orElse(ACCESS_DENIED);
+    final Optional<ApplicationPermission> matchedPermission = authorities.stream()
+            .map(x -> (ApplicationPermission) x)
+            .filter(x -> x.matches(filterInvocation, authentication.getPrincipal()))
+            .findAny();
+
+    return matchedPermission.map(x -> ACCESS_GRANTED).orElse(ACCESS_DENIED);
   }
 }