mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-10 07:25:44 +01:00
Merge with 2.0.0-m3
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user