diff --git a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsJwtDetails.java b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsJwtDetails.java index fca65ef7..1baeb883 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsJwtDetails.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsJwtDetails.java @@ -74,7 +74,7 @@ public class AppsJwtDetails extends Apps { @Column private String signatureKey; @Column - private String expires; + private Integer expires; @Column private String instId; @@ -207,12 +207,12 @@ public class AppsJwtDetails extends Apps { } - public String getExpires() { + public Integer getExpires() { return expires; } - public void setExpires(String expires) { + public void setExpires(Integer expires) { this.expires = expires; } diff --git a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsTokenBasedDetails.java b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsTokenBasedDetails.java index ecab55c3..01465fc6 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsTokenBasedDetails.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsTokenBasedDetails.java @@ -59,7 +59,7 @@ public class AppsTokenBasedDetails extends Apps { @Column private String algorithmKey; @Column - private String expires; + private Integer expires; @Column private String instId; @@ -130,12 +130,12 @@ public class AppsTokenBasedDetails extends Apps { } - public String getExpires() { + public Integer getExpires() { return expires; } - public void setExpires(String expires) { + public void setExpires(Integer expires) { this.expires = expires; } 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 ac20bb2d..975977ea 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 @@ -119,8 +119,8 @@ public class CasAuthorizeEndpoint extends CasBaseAuthorizeEndpoint{ HttpServletResponse response){ AppsCasDetails casDetails = (AppsCasDetails)WebContext.getAttribute(CasConstants.PARAMETER.ENDPOINT_CAS_DETAILS); ServiceTicketImpl serviceTicket = new ServiceTicketImpl(WebContext.getAuthentication(),casDetails); - - String ticket = ticketServices.createTicket(serviceTicket); + + String ticket = ticketServices.createTicket(serviceTicket,casDetails.getExpires()); StringBuffer callbackUrl = new StringBuffer(casDetails.getCallbackUrl()); if(casDetails.getCallbackUrl().indexOf("?")==-1) { diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/RandomServiceTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/RandomServiceTicketServices.java index b220fd8b..d1482cae 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/RandomServiceTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/RandomServiceTicketServices.java @@ -54,6 +54,35 @@ public abstract class RandomServiceTicketServices implements TicketServices { return ticketId; } + @Override + public String createTicket(Ticket ticket, int validitySeconds) { + + //String code = generator.generate(); + /* + * replace with uuid random code + * add by Crystal.Sea + */ + //String ticket = UUID.randomUUID().toString(); + String ticketId = ""; + if(ticket.getClass().getSimpleName().equalsIgnoreCase("ServiceTicketImpl")){ + ticketId = generator.getNewTicketId(CasConstants.PREFIX.SERVICE_TICKET_PREFIX); + }else if(ticket.getClass().getSimpleName().equalsIgnoreCase("ProxyTicketImpl")){ + ticketId = generator.getNewTicketId(CasConstants.PREFIX.PROXY_TICKET_PREFIX); + }else if(ticket.getClass().getSimpleName().equalsIgnoreCase("TicketGrantingTicketImpl")){ + ticketId = generator.getNewTicketId(CasConstants.PREFIX.TICKET_GRANTING_TICKET_PREFIX); + }else if(ticket.getClass().getSimpleName().equalsIgnoreCase("ProxyGrantingTicketImpl")){ + ticketId = generator.getNewTicketId(CasConstants.PREFIX.PROXY_GRANTING_TICKET_PREFIX); + }else if(ticket.getClass().getSimpleName().equalsIgnoreCase("ProxyGrantingTicketIOUImpl")){ + ticketId = generator.getNewTicketId(CasConstants.PREFIX.PROXY_GRANTING_TICKET_IOU_PREFIX); + return ticketId; + }else { + ticketId = generator.getNewTicketId(CasConstants.PREFIX.SERVICE_TICKET_PREFIX); + } + + store(ticketId, ticket,validitySeconds); + return ticketId; + } + public Ticket consumeTicket(String ticketId) throws Exception{ Ticket ticket = this.remove(ticketId); if (ticket == null) { diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/TicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/TicketServices.java index a60edecb..e22e5a39 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/TicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/TicketServices.java @@ -26,6 +26,8 @@ public interface TicketServices { * @return The generated code. */ String createTicket(Ticket ticket); + + String createTicket(Ticket ticket , int validitySeconds); /** * Consume a authorization code. @@ -38,6 +40,8 @@ public interface TicketServices { throws Exception; public void store(String ticketId, Ticket ticket); + + public void store(String ticketId, Ticket ticket, int validitySeconds); public Ticket remove(String ticket); diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/InMemoryProxyGrantingTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/InMemoryProxyGrantingTicketServices.java index 2c630183..927883f5 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/InMemoryProxyGrantingTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/InMemoryProxyGrantingTicketServices.java @@ -36,6 +36,11 @@ public class InMemoryProxyGrantingTicketServices extends RandomServiceTicketServ @Override public void store(String ticketId, Ticket ticket) { + store(ticketId, ticket , 60 * 3); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { casTicketStore.put(ticketId, ticket); } diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/RedisProxyGrantingTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/RedisProxyGrantingTicketServices.java index 4d916b61..66e83acf 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/RedisProxyGrantingTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/pgt/RedisProxyGrantingTicketServices.java @@ -52,8 +52,13 @@ public class RedisProxyGrantingTicketServices extends RandomServiceTicketService @Override public void store(String ticketId, Ticket ticket) { + store(ticketId,ticket,serviceTicketValiditySeconds); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { RedisConnection conn=connectionFactory.getConnection(); - conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket); + conn.setexObject(PREFIX+ticketId, validitySeconds, ticket); conn.close(); } diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/InMemoryTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/InMemoryTicketServices.java index bcb2710e..43837bca 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/InMemoryTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/InMemoryTicketServices.java @@ -36,6 +36,11 @@ public class InMemoryTicketServices extends RandomServiceTicketServices { @Override public void store(String ticketId, Ticket ticket) { + store(ticketId, ticket, 60 * 3); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { casTicketStore.put(ticketId, ticket); } diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/RedisTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/RedisTicketServices.java index e7636676..4fa6e3f1 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/RedisTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/st/RedisTicketServices.java @@ -52,9 +52,15 @@ public class RedisTicketServices extends RandomServiceTicketServices { @Override public void store(String ticketId, Ticket ticket) { + store(ticketId,ticket,serviceTicketValiditySeconds); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { RedisConnection conn=connectionFactory.getConnection(); - conn.setexObject(prefixTicketId(ticketId), serviceTicketValiditySeconds, ticket); + conn.setexObject(prefixTicketId(ticketId), validitySeconds, ticket); conn.close(); + } @Override diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/InMemoryTicketGrantingTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/InMemoryTicketGrantingTicketServices.java index 991aa60c..e9d9906a 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/InMemoryTicketGrantingTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/InMemoryTicketGrantingTicketServices.java @@ -35,7 +35,13 @@ public class InMemoryTicketGrantingTicketServices extends RandomServiceTicketSer @Override public void store(String ticketId, Ticket ticket) { - casTicketGrantingTicketStore.put(ticketId, ticket); + store(ticketId, ticket , 60 * 3); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { + casTicketGrantingTicketStore.put(ticketId, ticket); + } @Override diff --git a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/RedisTicketGrantingTicketServices.java b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/RedisTicketGrantingTicketServices.java index 44441727..63b95a57 100644 --- a/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/RedisTicketGrantingTicketServices.java +++ b/maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/tgt/RedisTicketGrantingTicketServices.java @@ -51,8 +51,13 @@ public class RedisTicketGrantingTicketServices extends RandomServiceTicketServic @Override public void store(String ticketId, Ticket ticket) { + store(ticketId, ticket, serviceTicketValiditySeconds); + } + + @Override + public void store(String ticketId, Ticket ticket, int validitySeconds) { RedisConnection conn=connectionFactory.getConnection(); - conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket); + conn.setexObject(PREFIX+ticketId, validitySeconds, ticket); conn.close(); } diff --git a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/jwt/endpoint/adapter/JwtAdapter.java b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/jwt/endpoint/adapter/JwtAdapter.java index 299c1e0b..e6f7e31b 100644 --- a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/jwt/endpoint/adapter/JwtAdapter.java +++ b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/jwt/endpoint/adapter/JwtAdapter.java @@ -65,7 +65,7 @@ public class JwtAdapter extends AbstractAuthorizeAdapter { @Override public Object generateInfo() { DateTime currentDateTime = DateTime.now(); - Date expirationTime = currentDateTime.plusMinutes(Integer.parseInt(jwtDetails.getExpires())).toDate(); + Date expirationTime = currentDateTime.plusSeconds(jwtDetails.getExpires()).toDate(); _logger.debug("expiration Time : {}" , expirationTime); String subject = getValueByUserAttr(userInfo,jwtDetails.getSubject()); _logger.trace("jwt subject : {}" , subject); diff --git a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java index 3730ce45..5707d750 100644 --- a/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-jwt/src/main/java/org/maxkey/authz/token/endpoint/JwtAuthorizeEndpoint.java @@ -114,7 +114,7 @@ public class JwtAuthorizeEndpoint extends AuthorizeBaseEndpoint{ Cookie cookie= new Cookie(jwtDetails.getJwtName(),adapter.serialize()); - Integer maxAge = Integer.parseInt(jwtDetails.getExpires()) * 60; + Integer maxAge = jwtDetails.getExpires(); _logger.debug("Cookie Max Age : {} seconds." , maxAge); cookie.setMaxAge(maxAge); diff --git a/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/TokenBasedAuthorizeEndpoint.java b/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/TokenBasedAuthorizeEndpoint.java index 36b2d535..f2cade04 100644 --- a/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/TokenBasedAuthorizeEndpoint.java +++ b/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/TokenBasedAuthorizeEndpoint.java @@ -102,7 +102,7 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{ Cookie cookie= new Cookie(tokenBasedDetails.getCookieName(),adapter.serialize()); - Integer maxAge=Integer.parseInt(tokenBasedDetails.getExpires()) * 60; + Integer maxAge = tokenBasedDetails.getExpires(); _logger.debug("Cookie Max Age : {} seconds.",maxAge); cookie.setMaxAge(maxAge); diff --git a/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedDefaultAdapter.java b/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedDefaultAdapter.java index 717807a8..9c4dc88c 100644 --- a/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedDefaultAdapter.java +++ b/maxkey-protocols/maxkey-protocol-tokenbased/src/main/java/org/maxkey/authz/token/endpoint/adapter/TokenBasedDefaultAdapter.java @@ -20,6 +20,7 @@ package org.maxkey.authz.token.endpoint.adapter; import java.util.Date; import java.util.HashMap; +import org.joda.time.DateTime; import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter; import org.maxkey.entity.apps.AppsTokenBasedDetails; import org.maxkey.util.DateUtils; @@ -78,15 +79,14 @@ public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter { * use UTC date time format * current date plus expires minute */ - Integer expiresLong=Integer.parseInt(details.getExpires()); - Date currentDate=new Date(); - Date expiresDate=DateUtils.addMinutes(currentDate,expiresLong); - String expiresString=DateUtils.toUtc(expiresDate); - _logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDate)); - _logger.debug("UTC current Date : "+DateUtils.toUtc(currentDate)); - _logger.debug("UTC expires Date : "+DateUtils.toUtc(expiresDate)); + DateTime currentDateTime = DateTime.now(); + Date expirationTime = currentDateTime.plusSeconds(details.getExpires()).toDate(); + String expiresString = DateUtils.toUtc(expirationTime); + _logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDateTime.toDate())); + _logger.debug("UTC current Date : "+DateUtils.toUtc(currentDateTime)); + _logger.debug("UTC expires Date : "+DateUtils.toUtc(currentDateTime)); - beanMap.put("at", DateUtils.toUtc(currentDate)); + beanMap.put("at", DateUtils.toUtc(currentDateTime)); beanMap.put("expires", expiresString); diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appAdd.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appAdd.ftl index 126f91b7..472beb31 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appAdd.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appAdd.ftl @@ -75,8 +75,8 @@ $(function(){ <@locale code="apps.cas.expires"/>
- - Minutes + + Seconds
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appUpdate.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appUpdate.ftl index 479679fc..b51ce512 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appUpdate.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/cas/appUpdate.ftl @@ -83,7 +83,7 @@ $(function(){
- Minutes + Seconds
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appAdd.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appAdd.ftl index 3ffcef79..9fd8310a 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appAdd.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appAdd.ftl @@ -78,8 +78,8 @@ <@locale code="apps.jwt.expires" />
- - Minutes + + Seconds
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appUpdate.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appUpdate.ftl index fc2ee407..efc8b39a 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appUpdate.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/jwt/appUpdate.ftl @@ -82,7 +82,7 @@
- Minutes + Seconds
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl index 175427fe..81e43087 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appAdd.ftl @@ -83,8 +83,8 @@ <@locale code="apps.tokenbased.expires" />
- - Minutes + + Seconds
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl index 16103cde..2a665169 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl +++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/templates/views/apps/tokenbased/appUpdate.ftl @@ -86,7 +86,7 @@
- Minutes + Seconds