sso session idle and max lifespan

This commit is contained in:
Bill Burke committed 2014-05-15 17:25:57 -04:00
1 parent 27efd3c0a4
commit bc2360e985
15 files changed
+86 -64

No files matched your search

+2 -2
View File
@@ -21,8 +21,8 @@ public interface UserSessionModel {
void setStarted(int started);
int getExpires();
int getLastSessionRefresh();
void setExpires(int expires);
void setLastSessionRefresh(int seconds);
}
@@ -1389,10 +1389,9 @@ public class RealmAdapter implements RealmModel {
entity.setIpAddress(ipAddress);
int currentTime = Time.currentTime();
int expires = currentTime + realm.getSsoSessionIdleTimeout();
entity.setStarted(currentTime);
entity.setExpires(expires);
entity.setLastSessionRefresh(currentTime);
em.persist(entity);
return new UserSessionAdapter(entity);
@@ -1429,7 +1428,10 @@ public class RealmAdapter implements RealmModel {
@Override
public void removeExpiredUserSessions() {
em.createNamedQuery("removeUserSessionExpired").setParameter("currentTime", Time.currentTime()).executeUpdate();
em.createNamedQuery("removeUserSessionExpired")
.setParameter("maxTime", Time.currentTime() - getSsoSessionMaxLifespan())
.setParameter("idleTime", Time.currentTime() - getSsoSessionIdleTimeout())
.executeUpdate();
}
}
+4 -5
View File
@@ -60,13 +60,12 @@ public class UserSessionAdapter implements UserSessionModel {
}
@Override
public int getExpires() {
return entity.getExpires();
public int getLastSessionRefresh() {
return entity.getLastSessionRefresh();
}
@Override
public void setExpires(int expires) {
entity.setExpires(expires);
public void setLastSessionRefresh(int seconds) {
entity.setLastSessionRefresh(seconds);
}
}
+6 -7
View File
@@ -17,7 +17,7 @@ import javax.persistence.NamedQuery;
@NamedQueries({
@NamedQuery(name = "getUserSessionByUser", query = "select s from UserSessionEntity s where s.user = :user"),
@NamedQuery(name = "removeUserSessionByUser", query = "delete from UserSessionEntity s where s.user = :user"),
@NamedQuery(name = "removeUserSessionExpired", query = "delete from UserSessionEntity s where s.expires < :currentTime")
@NamedQuery(name = "removeUserSessionExpired", query = "delete from UserSessionEntity s where s.started < :maxTime or s.lastSessionRefresh < :idleTime")
})
public class UserSessionEntity {
@@ -33,7 +33,7 @@ public class UserSessionEntity {
int started;
int expires;
int lastSessionRefresh;
public String getId() {
return id;
@@ -67,12 +67,11 @@ public class UserSessionEntity {
this.started = started;
}
public int getExpires() {
return expires;
public int getLastSessionRefresh() {
return lastSessionRefresh;
}
public void setExpires(int expires) {
this.expires = expires;
public void setLastSessionRefresh(int lastSessionRefresh) {
this.lastSessionRefresh = lastSessionRefresh;
}
}
@@ -1356,10 +1356,9 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
entity.setIpAddress(ipAddress);
int currentTime = Time.currentTime();
int expires = currentTime + realm.getSsoSessionIdleTimeout();
entity.setStarted(currentTime);
entity.setExpires(expires);
entity.setLastSessionRefresh(currentTime);
getMongoStore().insertEntity(entity, invocationContext);
return new UserSessionAdapter(entity, this, invocationContext);
@@ -1398,8 +1397,14 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
@Override
public void removeExpiredUserSessions() {
int currentTime = Time.currentTime();
DBObject query = new QueryBuilder()
.and("expires").lessThan(Time.currentTime())
.and("started").lessThan(currentTime - realm.getSsoSessionMaxLifespan())
.get();
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
query = new QueryBuilder()
.and("lastSessionRefresh").lessThan(currentTime - realm.getSsoSessionIdleTimeout())
.get();
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
@@ -65,13 +65,13 @@ public class UserSessionAdapter implements UserSessionModel {
}
@Override
public int getExpires() {
return entity.getExpires();
public int getLastSessionRefresh() {
return entity.getLastSessionRefresh();
}
@Override
public void setExpires(int expires) {
entity.setExpires(expires);
public void setLastSessionRefresh(int seconds) {
entity.setLastSessionRefresh(seconds);
}
}
@@ -17,7 +17,7 @@ public class MongoUserSessionEntity extends AbstractIdentifiableEntity implement
private int started;
private int expires;
private int lastSessionRefresh;
public String getUser() {
return user;
@@ -43,12 +43,12 @@ public class MongoUserSessionEntity extends AbstractIdentifiableEntity implement
this.started = started;
}
public int getExpires() {
return expires;
public int getLastSessionRefresh() {
return lastSessionRefresh;
}
public void setExpires(int expires) {
this.expires = expires;
public void setLastSessionRefresh(int lastSessionRefresh) {
this.lastSessionRefresh = lastSessionRefresh;
}
@Override