added device flow expiration
parent
f0c8b1b235
commit
8406a89fd1
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.mitre.oauth2.repository.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
import org.mitre.oauth2.model.DeviceCode;
|
||||
|
@ -56,4 +57,9 @@ public interface DeviceCodeRepository {
|
|||
*/
|
||||
public DeviceCode getByUserCode(String userCode);
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public Collection<DeviceCode> getExpiredCodes();
|
||||
|
||||
}
|
||||
|
|
|
@ -60,5 +60,7 @@ public interface DeviceCodeService {
|
|||
* @return
|
||||
*/
|
||||
public DeviceCode createNewDeviceCode(String deviceCode, String userCode, Set<String> requestedScopes, ClientDetailsEntity client, Map<String, String> parameters);
|
||||
|
||||
|
||||
|
||||
public void clearExpiredDeviceCodes();
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
<task:scheduled ref="defaultOAuth2ProviderTokenService" method="clearExpiredTokens" fixed-delay="300000" initial-delay="600000"/>
|
||||
<task:scheduled ref="defaultApprovedSiteService" method="clearExpiredSites" fixed-delay="300000" initial-delay="600000"/>
|
||||
<task:scheduled ref="defaultOAuth2AuthorizationCodeService" method="clearExpiredAuthorizationCodes" fixed-delay="300000" initial-delay="600000"/>
|
||||
<task:scheduled ref="defaultDeviceCodeService" method="clearExpiredDeviceCodes" fixed-delay="300000" initial-delay="600000"/>
|
||||
</task:scheduled-tasks>
|
||||
|
||||
</beans>
|
||||
|
|
|
@ -22,6 +22,8 @@ package org.mitre.oauth2.repository.impl;
|
|||
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
|
||||
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -93,4 +95,15 @@ public class JpaDeviceCodeRepository implements DeviceCodeRepository {
|
|||
return saveOrUpdate(scope.getId(), em, scope);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.mitre.oauth2.repository.impl.DeviceCodeRepository#getExpiredCodes()
|
||||
*/
|
||||
@Override
|
||||
@Transactional(value="defaultTransactionManager")
|
||||
public Collection<DeviceCode> getExpiredCodes() {
|
||||
TypedQuery<DeviceCode> query = em.createNamedQuery(DeviceCode.QUERY_EXPIRED_BY_DATE, DeviceCode.class);
|
||||
query.setParameter(DeviceCode.PARAM_DATE, new Date());
|
||||
return query.getResultList();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,11 +17,14 @@
|
|||
|
||||
package org.mitre.oauth2.service.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.mitre.data.AbstractPageOperationTemplate;
|
||||
import org.mitre.oauth2.model.AuthenticationHolderEntity;
|
||||
import org.mitre.oauth2.model.AuthorizationCodeEntity;
|
||||
import org.mitre.oauth2.model.ClientDetailsEntity;
|
||||
import org.mitre.oauth2.model.DeviceCode;
|
||||
import org.mitre.oauth2.repository.impl.DeviceCodeRepository;
|
||||
|
@ -30,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.security.oauth2.provider.ClientDetails;
|
||||
import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author jricher
|
||||
|
@ -103,4 +107,24 @@ public class DefaultDeviceCodeService implements DeviceCodeService {
|
|||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.mitre.oauth2.service.DeviceCodeService#clearExpiredDeviceCodes()
|
||||
*/
|
||||
@Override
|
||||
@Transactional(value="defaultTransactionManager")
|
||||
public void clearExpiredDeviceCodes() {
|
||||
|
||||
new AbstractPageOperationTemplate<DeviceCode>("clearExpiredDeviceCodes"){
|
||||
@Override
|
||||
public Collection<DeviceCode> fetchPage() {
|
||||
return repository.getExpiredCodes();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doOperation(DeviceCode item) {
|
||||
repository.remove(item);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue