Updated Krill version & added controller tests with OAuth2 access token.
Change-Id: Ib26d297a1446e5a4a6d6f4c5035b4e0a0e5f3fb9
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
index 68c815d..566d64b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
@@ -36,7 +36,7 @@
if (accessToken.isRevoked()) {
throw new KustvaktException(StatusCodes.EXPIRED);
}
-
+
ZonedDateTime expiry =
accessToken.getCreatedDate().plusSeconds(config.getTokenTTL());
String scopes = scopeService
@@ -44,7 +44,7 @@
TokenContext c = new TokenContext();
c.setUsername(accessToken.getUserId());
- c.setExpirationTime(expiry.toEpochSecond());
+ c.setExpirationTime(expiry.toInstant().toEpochMilli());
c.setToken(authToken);
c.setTokenType(TokenType.BEARER);
c.addContextParameter(Attributes.SCOPES, scopes);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
index c2de972..dcc7499 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
@@ -3,6 +3,7 @@
import java.util.Set;
import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
@@ -13,6 +14,7 @@
import org.springframework.transaction.annotation.Transactional;
import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.AccessToken;
import de.ids_mannheim.korap.oauth2.entity.AccessToken_;
@@ -50,7 +52,8 @@
}
- public AccessToken retrieveAccessToken (String accessToken) {
+ public AccessToken retrieveAccessToken (String accessToken)
+ throws KustvaktException {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<AccessToken> query =
builder.createQuery(AccessToken.class);
@@ -58,6 +61,12 @@
query.select(root);
query.where(builder.equal(root.get(AccessToken_.token), accessToken));
Query q = entityManager.createQuery(query);
- return (AccessToken) q.getSingleResult();
+ try {
+ return (AccessToken) q.getSingleResult();
+ }
+ catch (NoResultException e) {
+ throw new KustvaktException(StatusCodes.INVALID_ACCESS_TOKEN,
+ "Access token is not found");
+ }
}
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
index 0c66a2f..51f8644 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
@@ -120,7 +120,7 @@
}
else if (TimeUtils.isExpired(context.getExpirationTime())) {
throw new KustvaktException(StatusCodes.EXPIRED,
- "Login is expired.");
+ "Access token is expired");
}
}
diff --git a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
index b42ae28..2a203f3 100644
--- a/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
+++ b/full/src/main/resources/db/insert/V3.5__insert_oauth2_clients.sql
@@ -31,4 +31,11 @@
"PUBLIC", 1, "http://korap.ids-mannheim.de/public", 1360724310,
"https://korap.ids-mannheim.de/public/redirect","system",
"This is a test native public client.");
+
+
+INSERT INTO oauth2_access_token(token,user_id)
+VALUES("249c64a77f40e2b5504982cc5521b596","dory");
+
+INSERT INTO oauth2_access_token(token,user_id,created_date)
+VALUES("fia0123ikBWn931470H8s5gRqx7Moc4p","marlin","2018-05-30 16:25:50")
\ No newline at end of file
diff --git a/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql b/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
index d62e4df..c55d659 100644
--- a/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
+++ b/full/src/main/resources/db/new-sqlite/V1.5__oauth2_triggers.sql
@@ -5,7 +5,7 @@
WHERE rowid = new.rowid;
END;
-CREATE TRIGGER insert_access_token_date AFTER INSERT ON oauth2_access_token
+CREATE TRIGGER insert_access_token_date BEFORE INSERT ON oauth2_access_token
BEGIN
UPDATE oauth2_access_token
SET created_date = DATETIME('now', 'localtime')
diff --git a/full/src/main/resources/default-config.xml b/full/src/main/resources/default-config.xml
index eef04e8..e3910dc 100644
--- a/full/src/main/resources/default-config.xml
+++ b/full/src/main/resources/default-config.xml
@@ -192,7 +192,7 @@
<constructor-arg ref="kustvakt_db" />
</bean>
- <bean id="kustvaktResponseHandler" class="de.ids_mannheim.korap.web.KustvaktExceptionHandler">
+ <bean id="kustvaktExceptionHandler" class="de.ids_mannheim.korap.web.KustvaktExceptionHandler">
<constructor-arg index="0" name="iface" ref="kustvakt_auditing" />
</bean>
@@ -249,13 +249,16 @@
ref="kustvakt_encryption" />
</bean>
+ <bean id="oauth2_auth"
+ class="de.ids_mannheim.korap.authentication.OAuth2Authentication" />
+
<util:list id="kustvakt_authproviders"
value-type="de.ids_mannheim.korap.interfaces.AuthenticationIface">
<ref bean="ldap_auth" />
<ref bean="session_auth" />
<!-- <ref bean="api_auth" /> -->
<ref bean="openid_auth" />
- <ref bean="client_auth" />
+ <ref bean="oauth2_auth" />
</util:list>