From 773334ad47e0f1d77dd5383ffb21fa75ec010343 Mon Sep 17 00:00:00 2001 From: MaxKey Date: Tue, 26 Apr 2022 22:30:24 +0800 Subject: [PATCH] SessionManager --- .../authn/AbstractAuthenticationProvider.java | 8 +++--- .../provider/MfaAuthenticationProvider.java | 6 ++-- .../MobileAuthenticationProvider.java | 6 ++-- .../NormalAuthenticationProvider.java | 6 ++-- .../TrustedAuthenticationProvider.java | 6 ++-- ...rvice.java => AbstractSessionManager.java} | 6 ++-- ...rvice.java => InMemorySessionManager.java} | 10 +++---- ...nService.java => RedisSessionManager.java} | 12 ++++---- ...essionService.java => SessionManager.java} | 4 +-- ...actory.java => SessionManagerFactory.java} | 12 ++++---- .../maxkey/authn/web/AuthorizationUtils.java | 16 ++++++----- .../interceptor/PermissionInterceptor.java | 6 ++-- .../AuthenticationAutoConfiguration.java | 28 +++++++++---------- ...dpoint.java => OnlineSessionEndpoint.java} | 10 +++---- .../cas/endpoint/CasAuthorizeEndpoint.java | 4 +-- .../endpoint/CasBaseAuthorizeEndpoint.java | 4 +-- .../contorller/LoginSessionController.java | 6 ++-- .../maxkey/web/contorller/LogoutEndpoint.java | 8 +++--- .../interceptor/SingleSignOnInterceptor.java | 6 ++-- .../main/java/org/maxkey/MaxKeyMgtJobs.java | 18 ++++++------ ...erJob.java => SessionListenerAdapter.java} | 26 ++++++++--------- .../contorller/LoginSessionController.java | 6 ++-- .../maxkey/web/contorller/LogoutEndpoint.java | 6 ++-- 23 files changed, 111 insertions(+), 109 deletions(-) rename maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/{AbstractSessionService.java => AbstractSessionManager.java} (96%) rename maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/{InMemorySessionService.java => InMemorySessionManager.java} (91%) rename maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/{RedisSessionService.java => RedisSessionManager.java} (92%) rename maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/{SessionService.java => SessionManager.java} (92%) rename maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/{SessionServiceFactory.java => SessionManagerFactory.java} (82%) rename maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/{OnlineTicketEndpoint.java => OnlineSessionEndpoint.java} (84%) rename maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/{SessionListenerJob.java => SessionListenerAdapter.java} (72%) diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java index 584fe3189..161206622 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import org.maxkey.authn.jwt.AuthJwtService; import org.maxkey.authn.realm.AbstractAuthenticationRealm; import org.maxkey.authn.session.Session; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.authn.web.AuthorizationUtils; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.constants.ConstsLoginType; @@ -67,7 +67,7 @@ public abstract class AbstractAuthenticationProvider { protected OtpAuthnService otpAuthnService; - protected SessionService sessionService; + protected SessionManager sessionManager; protected AuthJwtService authJwtService; @@ -135,8 +135,8 @@ public abstract class AbstractAuthenticationProvider { */ session.setAuthentication(authenticationToken); - //store session - this.sessionService.store(session.getId(), session); + //create session + this.sessionManager.create(session.getId(), session); AuthorizationUtils.setSession(session); diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MfaAuthenticationProvider.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MfaAuthenticationProvider.java index a7a2ca778..4b55aef03 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MfaAuthenticationProvider.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MfaAuthenticationProvider.java @@ -21,7 +21,7 @@ import org.maxkey.authn.AbstractAuthenticationProvider; import org.maxkey.authn.LoginCredential; import org.maxkey.authn.jwt.AuthJwtService; import org.maxkey.authn.realm.AbstractAuthenticationRealm; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.constants.ConstsLoginType; import org.maxkey.entity.Institutions; @@ -57,11 +57,11 @@ public class MfaAuthenticationProvider extends AbstractAuthenticationProvider { public MfaAuthenticationProvider( AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, - SessionService sessionService, + SessionManager sessionManager, AuthJwtService authJwtService) { this.authenticationRealm = authenticationRealm; this.applicationConfig = applicationConfig; - this.sessionService = sessionService; + this.sessionManager = sessionManager; this.authJwtService = authJwtService; } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MobileAuthenticationProvider.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MobileAuthenticationProvider.java index 257c92679..17256777b 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MobileAuthenticationProvider.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/MobileAuthenticationProvider.java @@ -20,7 +20,7 @@ package org.maxkey.authn.provider; import org.maxkey.authn.AbstractAuthenticationProvider; import org.maxkey.authn.LoginCredential; import org.maxkey.authn.realm.AbstractAuthenticationRealm; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.constants.ConstsLoginType; import org.maxkey.entity.UserInfo; @@ -60,11 +60,11 @@ public class MobileAuthenticationProvider extends AbstractAuthenticationProvider AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, OtpAuthnService otpAuthnService, - SessionService sessionService) { + SessionManager sessionManager) { this.authenticationRealm = authenticationRealm; this.applicationConfig = applicationConfig; this.otpAuthnService = otpAuthnService; - this.sessionService = sessionService; + this.sessionManager = sessionManager; } @Override diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/NormalAuthenticationProvider.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/NormalAuthenticationProvider.java index e40d23a42..71b5be9a7 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/NormalAuthenticationProvider.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/NormalAuthenticationProvider.java @@ -22,7 +22,7 @@ import org.maxkey.authn.AbstractAuthenticationProvider; import org.maxkey.authn.LoginCredential; import org.maxkey.authn.jwt.AuthJwtService; import org.maxkey.authn.realm.AbstractAuthenticationRealm; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.constants.ConstsLoginType; import org.maxkey.entity.Institutions; @@ -57,11 +57,11 @@ public class NormalAuthenticationProvider extends AbstractAuthenticationProvider public NormalAuthenticationProvider( AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, - SessionService sessionService, + SessionManager sessionService, AuthJwtService authJwtService) { this.authenticationRealm = authenticationRealm; this.applicationConfig = applicationConfig; - this.sessionService = sessionService; + this.sessionManager = sessionManager; this.authJwtService = authJwtService; } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/TrustedAuthenticationProvider.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/TrustedAuthenticationProvider.java index e8634aa3e..a2ca7fa04 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/TrustedAuthenticationProvider.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/provider/TrustedAuthenticationProvider.java @@ -20,7 +20,7 @@ package org.maxkey.authn.provider; import org.maxkey.authn.AbstractAuthenticationProvider; import org.maxkey.authn.LoginCredential; import org.maxkey.authn.realm.AbstractAuthenticationRealm; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.entity.UserInfo; import org.maxkey.web.WebContext; @@ -49,10 +49,10 @@ public class TrustedAuthenticationProvider extends AbstractAuthenticationProvide public TrustedAuthenticationProvider( AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, - SessionService sessionService) { + SessionManager sessionManager) { this.authenticationRealm = authenticationRealm; this.applicationConfig = applicationConfig; - this.sessionService = sessionService; + this.sessionManager = sessionManager; } @Override diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionManager.java similarity index 96% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionManager.java index ea7c70f00..b9fe4fb2e 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionManager.java @@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -public class AbstractSessionService implements SessionService{ - private static Logger _logger = LoggerFactory.getLogger(AbstractSessionService.class); +public class AbstractSessionManager implements SessionManager{ + private static Logger _logger = LoggerFactory.getLogger(AbstractSessionManager.class); protected JdbcTemplate jdbcTemplate; @@ -93,7 +93,7 @@ public class AbstractSessionService implements SessionService{ } @Override - public void store(String sessionId, Session session) { + public void create(String sessionId, Session session) { } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java similarity index 91% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionService.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java index ba4429c72..8216099f3 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/InMemorySessionManager.java @@ -29,8 +29,8 @@ import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; -public class InMemorySessionService extends AbstractSessionService{ - private static final Logger _logger = LoggerFactory.getLogger(InMemorySessionService.class); +public class InMemorySessionManager extends AbstractSessionManager{ + private static final Logger _logger = LoggerFactory.getLogger(InMemorySessionManager.class); protected static Cache sessionStore = Caffeine.newBuilder() @@ -38,13 +38,13 @@ public class InMemorySessionService extends AbstractSessionService{ .maximumSize(200000) .build(); - public InMemorySessionService(JdbcTemplate jdbcTemplate) { + public InMemorySessionManager(JdbcTemplate jdbcTemplate) { super(); this.jdbcTemplate = jdbcTemplate; } @Override - public void store(String sessionId, Session session) { + public void create(String sessionId, Session session) { sessionStore.put(sessionId, session); } @@ -75,7 +75,7 @@ public class InMemorySessionService extends AbstractSessionService{ public void refresh(String sessionId,LocalTime refreshTime) { Session session = get(sessionId); session.setLastAccessTime(refreshTime); - store(sessionId , session); + create(sessionId , session); } @Override diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java similarity index 92% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java index 0b12fa6ef..d98c899e5 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionManager.java @@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; -public class RedisSessionService extends AbstractSessionService { - private static final Logger _logger = LoggerFactory.getLogger(RedisSessionService.class); +public class RedisSessionManager extends AbstractSessionManager { + private static final Logger _logger = LoggerFactory.getLogger(RedisSessionManager.class); protected int serviceTicketValiditySeconds = 60 * 30; //default 30 minutes. @@ -38,7 +38,7 @@ public class RedisSessionService extends AbstractSessionService { /** * @param connectionFactory */ - public RedisSessionService( + public RedisSessionManager( RedisConnectionFactory connectionFactory, JdbcTemplate jdbcTemplate) { super(); @@ -49,7 +49,7 @@ public class RedisSessionService extends AbstractSessionService { /** * */ - public RedisSessionService() { + public RedisSessionManager() { } @@ -58,7 +58,7 @@ public class RedisSessionService extends AbstractSessionService { } @Override - public void store(String sessionId, Session ticket) { + public void create(String sessionId, Session ticket) { RedisConnection conn=connectionFactory.getConnection(); conn.setexObject(PREFIX+sessionId, serviceTicketValiditySeconds, ticket); conn.close(); @@ -91,7 +91,7 @@ public class RedisSessionService extends AbstractSessionService { public void refresh(String sessionId,LocalTime refreshTime) { Session session = get(sessionId); session.setLastAccessTime(refreshTime); - store(sessionId , session); + create(sessionId , session); } @Override diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java similarity index 92% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java index b82fbaf49..dfde93e68 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManager.java @@ -22,9 +22,9 @@ import java.util.List; import org.maxkey.entity.HistoryLogin; -public interface SessionService { +public interface SessionManager { - public void store(String sessionId, Session session); + public void create(String sessionId, Session session); public Session remove(String sessionId); diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionServiceFactory.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java similarity index 82% rename from maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionServiceFactory.java rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java index a7b5cc17c..4005ddc9b 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionServiceFactory.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionManagerFactory.java @@ -23,23 +23,23 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; -public class SessionServiceFactory { +public class SessionManagerFactory { private static final Logger _logger = - LoggerFactory.getLogger(SessionServiceFactory.class); + LoggerFactory.getLogger(SessionManagerFactory.class); - public SessionService getService( + public SessionManager getManager( int persistence, JdbcTemplate jdbcTemplate, RedisConnectionFactory redisConnFactory){ - SessionService sessionService = null; + SessionManager sessionService = null; if (persistence == ConstsPersistence.INMEMORY) { - sessionService = new InMemorySessionService(jdbcTemplate); + sessionService = new InMemorySessionManager(jdbcTemplate); _logger.debug("InMemorySessionService"); } else if (persistence == ConstsPersistence.JDBC) { _logger.debug("JdbcSessionService not support "); } else if (persistence == ConstsPersistence.REDIS) { - sessionService = new RedisSessionService(redisConnFactory,jdbcTemplate); + sessionService = new RedisSessionManager(redisConnFactory,jdbcTemplate); _logger.debug("RedisSessionService"); } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/AuthorizationUtils.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/AuthorizationUtils.java index f1f1a6ce1..ef7f1e5f1 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/AuthorizationUtils.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/AuthorizationUtils.java @@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletRequest; import org.maxkey.authn.SignPrincipal; import org.maxkey.authn.jwt.AuthJwtService; import org.maxkey.authn.session.Session; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.UserInfo; import org.maxkey.util.AuthorizationHeaderUtils; import org.maxkey.web.WebConstants; @@ -42,13 +42,13 @@ public class AuthorizationUtils { public static void authenticateWithCookie( HttpServletRequest request, AuthJwtService authJwtService, - SessionService sessionService + SessionManager sessionManager ) throws ParseException{ if(getSession() == null) { Cookie authCookie = WebContext.getCookie(request, Authorization_Cookie); if(authCookie != null ) { String authorization = authCookie.getValue(); - doJwtAuthenticate(authorization,authJwtService,sessionService); + doJwtAuthenticate(authorization,authJwtService,sessionManager); _logger.debug("congress automatic authenticated ."); } } @@ -57,12 +57,12 @@ public class AuthorizationUtils { public static void authenticate( HttpServletRequest request, AuthJwtService authJwtService, - SessionService sessionService + SessionManager sessionManager ) throws ParseException{ if(getSession() == null) { String authorization = AuthorizationHeaderUtils.resolveBearer(request); if(authorization != null ) { - doJwtAuthenticate(authorization,authJwtService,sessionService); + doJwtAuthenticate(authorization,authJwtService,sessionManager); _logger.debug("Authorization automatic authenticated ."); } } @@ -71,10 +71,10 @@ public class AuthorizationUtils { public static void doJwtAuthenticate( String authorization, AuthJwtService authJwtService, - SessionService sessionService) throws ParseException { + SessionManager sessionManager) throws ParseException { if(authJwtService.validateJwtToken(authorization)) { String sessionId = authJwtService.resolveJWTID(authorization); - Session session = sessionService.get(sessionId); + Session session = sessionManager.get(sessionId); if(session != null) { setSession(session); setAuthentication(session.getAuthentication()); @@ -82,6 +82,7 @@ public class AuthorizationUtils { } } + //set session to http session public static void setSession(Session session) { WebContext.setAttribute(WebConstants.SESSION, session); } @@ -91,6 +92,7 @@ public class AuthorizationUtils { return session; } + //get session to http session public static Session getSession(HttpServletRequest request) { Session session = (Session) request.getSession().getAttribute(WebConstants.SESSION); return session; diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionInterceptor.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionInterceptor.java index b3d3fb73e..158b71332 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionInterceptor.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/interceptor/PermissionInterceptor.java @@ -23,7 +23,7 @@ import javax.servlet.http.HttpServletResponse; import org.maxkey.authn.SignPrincipal; import org.maxkey.authn.jwt.AuthJwtService; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.authn.web.AuthorizationUtils; import org.maxkey.configuration.ApplicationConfig; import org.slf4j.Logger; @@ -44,7 +44,7 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { ApplicationConfig applicationConfig; @Autowired - SessionService sessionService; + SessionManager sessionManager; @Autowired AuthJwtService authJwtService ; @@ -59,7 +59,7 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception { _logger.trace("Permission Interceptor ."); - AuthorizationUtils.authenticate(request, authJwtService, sessionService); + AuthorizationUtils.authenticate(request, authJwtService, sessionManager); SignPrincipal principal = AuthorizationUtils.getPrincipal(); //判断用户是否登录,判断用户是否登录用户 if(principal == null){ diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java index 3feac76c2..eabf414ca 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/AuthenticationAutoConfiguration.java @@ -28,8 +28,8 @@ import org.maxkey.authn.provider.MobileAuthenticationProvider; import org.maxkey.authn.provider.NormalAuthenticationProvider; import org.maxkey.authn.provider.TrustedAuthenticationProvider; import org.maxkey.authn.realm.AbstractAuthenticationRealm; -import org.maxkey.authn.session.SessionService; -import org.maxkey.authn.session.SessionServiceFactory; +import org.maxkey.authn.session.SessionManager; +import org.maxkey.authn.session.SessionManagerFactory; import org.maxkey.authn.web.SessionListenerAdapter; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.configuration.AuthJwkConfig; @@ -86,14 +86,14 @@ public class AuthenticationAutoConfiguration implements InitializingBean { public AbstractAuthenticationProvider normalAuthenticationProvider( AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, - SessionService sessionService, + SessionManager sessionManager, AuthJwtService authJwtService ) { _logger.debug("init authentication Provider ."); return new NormalAuthenticationProvider( authenticationRealm, applicationConfig, - sessionService, + sessionManager, authJwtService ); } @@ -103,14 +103,14 @@ public class AuthenticationAutoConfiguration implements InitializingBean { AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, OtpAuthnService otpAuthnService, - SessionService sessionService + SessionManager sessionManager ) { _logger.debug("init Mobile authentication Provider ."); return new MobileAuthenticationProvider( authenticationRealm, applicationConfig, otpAuthnService, - sessionService + sessionManager ); } @@ -118,13 +118,13 @@ public class AuthenticationAutoConfiguration implements InitializingBean { public AbstractAuthenticationProvider trustedAuthenticationProvider( AbstractAuthenticationRealm authenticationRealm, ApplicationConfig applicationConfig, - SessionService sessionService + SessionManager sessionManager ) { _logger.debug("init Mobile authentication Provider ."); return new TrustedAuthenticationProvider( authenticationRealm, applicationConfig, - sessionService + sessionManager ); } @@ -181,18 +181,18 @@ public class AuthenticationAutoConfiguration implements InitializingBean { } - @Bean(name = "sessionService") - public SessionService sessionService( + @Bean(name = "sessionManager") + public SessionManager sessionManager( @Value("${maxkey.server.persistence}") int persistence, JdbcTemplate jdbcTemplate, RedisConnectionFactory redisConnFactory, @Value("${server.servlet.session.timeout:1800}") int timeout ) { - SessionService sessionService = - new SessionServiceFactory().getService(persistence, jdbcTemplate, redisConnFactory); - sessionService.setValiditySeconds(timeout); + SessionManager sessionManager = + new SessionManagerFactory().getManager(persistence, jdbcTemplate, redisConnFactory); + sessionManager.setValiditySeconds(timeout); _logger.trace("onlineTicket timeout " + timeout); - return sessionService; + return sessionManager; } @Bean(name = "sessionListenerAdapter") diff --git a/maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineTicketEndpoint.java b/maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineSessionEndpoint.java similarity index 84% rename from maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineTicketEndpoint.java rename to maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineSessionEndpoint.java index ffa81f935..e1316a547 100644 --- a/maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineTicketEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-authorize/src/main/java/org/maxkey/authz/endpoint/OnlineSessionEndpoint.java @@ -18,7 +18,7 @@ package org.maxkey.authz.endpoint; import org.maxkey.authn.session.Session; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -31,17 +31,17 @@ import io.swagger.v3.oas.annotations.tags.Tag; @Tag(name = "3-1-在线ticket文档模块") @Controller @RequestMapping(value={"/onlineticket"}) -public class OnlineTicketEndpoint { +public class OnlineSessionEndpoint { @Autowired - protected SessionService onlineTicketService; + protected SessionManager sessionManager; @Operation(summary = "在线ticket验证接口", description = "",method="GET") @ResponseBody @RequestMapping(value="/validate") public String ticketValidate( @RequestParam(value ="ticket",required = true) String ticket) { - Session onlineTicket = onlineTicketService.get(ticket); - return onlineTicket == null ? "" : onlineTicket.getFormattedId(); + Session session = sessionManager.get(ticket); + return session == null ? "" : session.getFormattedId(); } } diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java index 82925c90f..ba9d81bdd 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasAuthorizeEndpoint.java @@ -150,11 +150,11 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{ if(casDetails.getLogoutType()==LogoutType.BACK_CHANNEL) { String sessionId = AuthorizationUtils.getPrincipal().getSession().getFormattedId(); - Session session = sessionService.get(sessionId); + Session session = sessionManager.get(sessionId); //set cas ticket as OnlineTicketId casDetails.setOnlineTicket(ticket); session.setAuthorizedApp(casDetails); - sessionService.store(sessionId, session); + sessionManager.create(sessionId, session); } _logger.debug("redirect to CAS Client URL {}" , callbackUrl); diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java index e07b02ad8..14ff22394 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/CasBaseAuthorizeEndpoint.java @@ -17,7 +17,7 @@ package org.maxkey.authz.cas.endpoint; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.authz.cas.endpoint.ticket.TicketServices; import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint; import org.maxkey.persistence.service.AppsCasDetailsService; @@ -49,7 +49,7 @@ public class CasBaseAuthorizeEndpoint extends AuthorizeBaseEndpoint{ protected TicketServices casTicketGrantingTicketServices; @Autowired - protected SessionService sessionService; + protected SessionManager sessionManager; @Autowired @Qualifier("casProxyGrantingTicketServices") diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java index 18b1bffc4..d3631d27b 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java @@ -21,7 +21,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.apache.mybatis.jpa.persistence.JpaPageResults; import org.maxkey.authn.annotation.CurrentUser; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.HistoryLogin; import org.maxkey.entity.Message; import org.maxkey.entity.UserInfo; @@ -57,7 +57,7 @@ public class LoginSessionController { HistoryLoginService historyLoginService; @Autowired - SessionService sessionService; + SessionManager sessionManager; /** * 查询登录日志. @@ -90,7 +90,7 @@ public class LoginSessionController { continue;//skip current session } - sessionService.terminate( + sessionManager.terminate( sessionId, currentUser.getId(), currentUser.getUsername()); diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java index 426e09f4a..cf4aa62d1 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java @@ -23,7 +23,7 @@ import java.util.Map.Entry; import org.maxkey.authn.annotation.CurrentUser; import org.maxkey.authn.session.Session; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.authz.singlelogout.SamlSingleLogout; import org.maxkey.authz.singlelogout.DefaultSingleLogout; import org.maxkey.authz.singlelogout.LogoutType; @@ -48,14 +48,14 @@ public class LogoutEndpoint { private static Logger _logger = LoggerFactory.getLogger(LogoutEndpoint.class); @Autowired - protected SessionService sessionService; + protected SessionManager sessionManager; @Operation(summary = "单点注销接口", description = "reLoginUrl跳转地址",method="GET") @RequestMapping(value={"/logout"}, produces = {MediaType.APPLICATION_JSON_VALUE}) public ResponseEntity logout(@CurrentUser UserInfo currentUser){ //if logined in have onlineTicket ,need remove or logout back String sessionId = currentUser.getSessionId(); - Session session = sessionService.get(sessionId); + Session session = sessionManager.get(sessionId); if(session != null) { Set> entrySet = session.getAuthorizedApps().entrySet(); @@ -74,7 +74,7 @@ public class LogoutEndpoint { } } - sessionService.terminate( + sessionManager.terminate( session.getId(), currentUser.getId(), currentUser.getUsername()); diff --git a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/SingleSignOnInterceptor.java b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/SingleSignOnInterceptor.java index 304ca69ee..60eb6edfe 100644 --- a/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/SingleSignOnInterceptor.java +++ b/maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/SingleSignOnInterceptor.java @@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.maxkey.authn.jwt.AuthJwtService; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.authn.web.AuthorizationUtils; import org.maxkey.configuration.ApplicationConfig; import org.maxkey.crypto.Base64Utils; @@ -39,7 +39,7 @@ public class SingleSignOnInterceptor implements AsyncHandlerInterceptor { ApplicationConfig applicationConfig; @Autowired - SessionService sessionService; + SessionManager sessionManager; @Autowired AuthJwtService authJwtService ; @@ -51,7 +51,7 @@ public class SingleSignOnInterceptor implements AsyncHandlerInterceptor { _logger.trace("Single Sign On Interceptor"); AuthorizationUtils.authenticateWithCookie( - request,authJwtService,sessionService); + request,authJwtService,sessionManager); if(AuthorizationUtils.isNotAuthenticated()){ String loginUrl = applicationConfig.getFrontendUri() + "/#/passport/login?redirect_uri=%s"; diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java index 595686347..9533cdeb8 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java @@ -17,10 +17,10 @@ package org.maxkey; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.jobs.AccountsStrategyJob; import org.maxkey.jobs.DynamicGroupsJob; -import org.maxkey.jobs.SessionListenerJob; +import org.maxkey.jobs.SessionListenerAdapter; import org.maxkey.persistence.service.AccountsService; import org.maxkey.persistence.service.GroupsService; import org.quartz.CronScheduleBuilder; @@ -44,22 +44,22 @@ import org.springframework.scheduling.quartz.SchedulerFactoryBean; public class MaxKeyMgtJobs implements InitializingBean { private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtJobs.class); - @Bean(name = "schedulerSessionListenerJobs") - public String ticketListenerJob( + @Bean(name = "schedulerSessionListenerAdapter") + public String sessionListenerAdapter( SchedulerFactoryBean schedulerFactoryBean, - SessionService sessionService) throws SchedulerException { + SessionManager sessionManager) throws SchedulerException { JobDataMap jobDataMap = new JobDataMap(); - jobDataMap.put("service", sessionService); + jobDataMap.put("service", sessionManager); addJobScheduler( - SessionListenerJob.class, + SessionListenerAdapter.class, schedulerFactoryBean, jobDataMap, "0 0/10 * * * ?",//10 minutes - "SessionListener" + "SessionListenerAdapter" ); - return "schedulerSessionListenerJobs"; + return "schedulerSessionListenerAdapter"; } @Bean(name = "schedulerDynamicGroupsJobs") diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerAdapter.java similarity index 72% rename from maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java rename to maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerAdapter.java index c143fd3b3..ba6e58497 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerAdapter.java @@ -17,7 +17,7 @@ package org.maxkey.jobs; import java.io.Serializable; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.HistoryLogin; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -25,32 +25,32 @@ import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class SessionListenerJob extends AbstractScheduleJob implements Job , Serializable { - final static Logger _logger = LoggerFactory.getLogger(SessionListenerJob.class); +public class SessionListenerAdapter extends AbstractScheduleJob implements Job , Serializable { + final static Logger _logger = LoggerFactory.getLogger(SessionListenerAdapter.class); private static final long serialVersionUID = 4782358765969474833L; - SessionService sessionService; + SessionManager sessionManager; @Override public void execute(JobExecutionContext context) throws JobExecutionException { if(jobStatus == JOBSTATUS.RUNNING) {return;} init(context); - _logger.debug("TicketListener Job is running ... " ); + _logger.debug("SessionListener Job is running ... " ); jobStatus = JOBSTATUS.RUNNING; try { - if(sessionService != null) { - for (HistoryLogin onlineSession : sessionService.querySessions()) { - if(sessionService.get(onlineSession.getSessionId()) == null) { - sessionService.terminate( + if(sessionManager != null) { + for (HistoryLogin onlineSession : sessionManager.querySessions()) { + if(sessionManager.get(onlineSession.getSessionId()) == null) { + sessionManager.terminate( onlineSession.getSessionId(), onlineSession.getUserId(), onlineSession.getUsername()); } } } - _logger.debug("TicketListener Job finished " ); + _logger.debug("SessionListener Job finished " ); jobStatus = JOBSTATUS.FINISHED; }catch(Exception e) { jobStatus = JOBSTATUS.ERROR; @@ -61,9 +61,9 @@ public class SessionListenerJob extends AbstractScheduleJob implements Job , S @Override void init(JobExecutionContext context){ - if(sessionService == null) { - sessionService = - (SessionService) context.getMergedJobDataMap().get("service"); + if(sessionManager == null) { + sessionManager = + (SessionManager) context.getMergedJobDataMap().get("service"); } } } diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java index 20dae1f06..0a0704a7a 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java @@ -21,7 +21,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import org.apache.mybatis.jpa.persistence.JpaPageResults; import org.maxkey.authn.annotation.CurrentUser; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.HistoryLogin; import org.maxkey.entity.Message; import org.maxkey.entity.UserInfo; @@ -57,7 +57,7 @@ public class LoginSessionController { HistoryLoginService historyLoginService; @Autowired - SessionService sessionService; + SessionManager sessionManager; /** * 查询登录日志. @@ -90,7 +90,7 @@ public class LoginSessionController { if(currentUser.getSessionId().contains(sessionId)) { continue;//skip current session } - sessionService.terminate(sessionId,currentUser.getId(),currentUser.getUsername()); + sessionManager.terminate(sessionId,currentUser.getId(),currentUser.getUsername()); } isTerminated = true; }catch(Exception e) { diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java index 4541bb2c5..db80b8920 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/LogoutEndpoint.java @@ -18,7 +18,7 @@ package org.maxkey.web.contorller; import org.maxkey.authn.annotation.CurrentUser; -import org.maxkey.authn.session.SessionService; +import org.maxkey.authn.session.SessionManager; import org.maxkey.entity.Message; import org.maxkey.entity.UserInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -31,11 +31,11 @@ import org.springframework.web.bind.annotation.RequestMapping; public class LogoutEndpoint { @Autowired - protected SessionService sessionService; + protected SessionManager sessionManager; @RequestMapping(value={"/logout"}, produces = {MediaType.APPLICATION_JSON_VALUE}) public ResponseEntity logout(@CurrentUser UserInfo currentUser){ - sessionService.terminate( + sessionManager.terminate( currentUser.getSessionId(), currentUser.getId(), currentUser.getUsername());