sso session idle and max lifespan
This commit is contained in:
1 parent
27efd3c0a4
commit
bc2360e985
15 files changed
+86
-64
No files matched your search
Regular → Executable
+2
-2
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
Regular → Executable
+4
-5
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Regular → Executable
+6
-7
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+8
-3
@@ -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);
|
||||
|
||||
Regular → Executable
+4
-4
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Regular → Executable
+5
-5
@@ -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
|
||||
|
||||
Reference in new issue
Block a user