Merge with 2.0.0-m3

This commit is contained in:
René Pfeuffer
2018-12-07 12:55:14 +01:00
37 changed files with 1320 additions and 468 deletions

View File

@@ -51,6 +51,7 @@ import static com.google.common.base.Preconditions.*;
//~--- JDK imports ------------------------------------------------------------
import java.security.SecureRandom;
import java.util.Random;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -88,12 +89,17 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter
*/
@Inject
@SuppressWarnings("unchecked")
public SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory)
public SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory) {
this(storeFactory, new SecureRandom());
}
SecureKeyResolver(ConfigurationEntryStoreFactory storeFactory, Random random)
{
store = storeFactory
.withType(SecureKey.class)
.withName(STORE_NAME)
.build();
this.random = random;
}
//~--- methods --------------------------------------------------------------
@@ -112,7 +118,9 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter
SecureKey key = store.get(subject);
checkState(key != null, "could not resolve key for subject %s", subject);
if (key == null) {
return getSecureKey(subject).getBytes();
}
return key.getBytes();
}
@@ -161,7 +169,7 @@ public class SecureKeyResolver extends SigningKeyResolverAdapter
//~--- fields ---------------------------------------------------------------
/** secure randon */
private final SecureRandom random = new SecureRandom();
private final Random random;
/** configuration entry store */
private final ConfigurationEntryStore<SecureKey> store;

View File

@@ -1,5 +1,6 @@
package sonia.scm.web.security;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -64,7 +65,13 @@ public class TokenRefreshFilter extends HttpFilter {
}
private void examineToken(HttpServletRequest request, HttpServletResponse response, BearerToken token) {
AccessToken accessToken = resolver.resolve(token);
AccessToken accessToken;
try {
accessToken = resolver.resolve(token);
} catch (AuthenticationException e) {
LOG.trace("could not resolve token", e);
return;
}
if (accessToken instanceof JwtAccessToken) {
refresher.refresh((JwtAccessToken) accessToken)
.ifPresent(jwtAccessToken -> refreshToken(request, response, jwtAccessToken));