Skip to content

Commit ed11352

Browse files
committed
add bearer token with no api token signed url functionality
1 parent 126ec94 commit ed11352

4 files changed

Lines changed: 309 additions & 182 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/api/Access.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import edu.harvard.iq.dataverse.*;
1010
import edu.harvard.iq.dataverse.api.auth.AuthRequired;
11+
import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean;
1112
import edu.harvard.iq.dataverse.authorization.DataverseRole;
1213
import edu.harvard.iq.dataverse.authorization.Permission;
1314
import edu.harvard.iq.dataverse.authorization.RoleAssignee;
@@ -487,8 +488,15 @@ private Response returnSignedUrl(ContainerRequestContext crc, UriInfo uriInfo, U
487488
if (user != null && user instanceof AuthenticatedUser) {
488489
AuthenticatedUser requestor = (AuthenticatedUser) user;
489490
userIdentifier = requestor.getUserIdentifier();
491+
// Find the latest token: Use for signing
492+
// Could be null if no token was generated: Generate one to be used for signing (expire in 1 minute to match timeout in signedUrl)
493+
// Could be expired: The user was already authenticated (possible by bearer token). Only used for signing so we don't care
490494
ApiToken apiToken = authSvc.findApiTokenByUser(requestor);
491-
if (apiToken != null && !apiToken.isExpired() && !apiToken.isDisabled()) {
495+
if (apiToken == null) {
496+
logger.fine("Generating temporary API token for user " + userIdentifier);
497+
apiToken = authSvc.generateApiTokenForUser(requestor, AuthenticationServiceBean.INTERVAL.MINUTES, 1);
498+
}
499+
if (apiToken != null) {
492500
key = apiToken.getTokenString();
493501
}
494502
} else {

0 commit comments

Comments
 (0)