This commit is contained in:
MaxKey
2022-02-13 15:08:08 +08:00
parent 3b8b998e89
commit 120f8b3d8e
79 changed files with 1984 additions and 1489 deletions

View File

@@ -57,9 +57,7 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
final static Logger _logger = LoggerFactory.getLogger(TokenBasedAuthorizeEndpoint.class);
@Autowired
AppsTokenBasedDetailsService tokenBasedDetailsService;
TokenBasedDefaultAdapter defaultTokenBasedAdapter=new TokenBasedDefaultAdapter();
@Autowired
ApplicationConfig applicationConfig;
@@ -84,42 +82,28 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
if(ConstsBoolean.isTrue(tokenBasedDetails.getIsAdapter())){
adapter =(AbstractAuthorizeAdapter)Instance.newInstance(tokenBasedDetails.getAdapter());
}else{
adapter =(AbstractAuthorizeAdapter)defaultTokenBasedAdapter;
adapter =(AbstractAuthorizeAdapter)new TokenBasedDefaultAdapter();
}
adapter.setAuthentication((SigninPrincipal)WebContext.getAuthentication().getPrincipal());
adapter.setUserInfo(WebContext.getUserInfo());
adapter.setApp(tokenBasedDetails);
String tokenData=adapter.generateInfo(
(SigninPrincipal)WebContext.getAuthentication().getPrincipal(),
WebContext.getUserInfo(),
tokenBasedDetails);
adapter.generateInfo();
String encryptTokenData=adapter.encrypt(
tokenData,
adapter.encrypt(
null,
tokenBasedDetails.getAlgorithmKey(),
tokenBasedDetails.getAlgorithm());
String signTokenData=adapter.sign(
encryptTokenData,
tokenBasedDetails);
if(tokenBasedDetails.getTokenType().equalsIgnoreCase("POST")) {
modelAndView=adapter.authorize(
WebContext.getUserInfo(),
tokenBasedDetails,
signTokenData,
modelAndView);
return modelAndView;
return adapter.authorize(modelAndView);
}else {
_logger.debug("Cookie Name : {}" ,tokenBasedDetails.getCookieName());
String cookieValue="";
cookieValue=signTokenData;
Cookie cookie= new Cookie(tokenBasedDetails.getCookieName(),adapter.serialize());
_logger.debug("Cookie Name : "+tokenBasedDetails.getCookieName());
Cookie cookie= new Cookie(tokenBasedDetails.getCookieName(),cookieValue);
Integer maxAge=Integer.parseInt(tokenBasedDetails.getExpires())*60;
_logger.debug("Cookie Max Age :"+maxAge+" seconds.");
Integer maxAge=Integer.parseInt(tokenBasedDetails.getExpires()) * 60;
_logger.debug("Cookie Max Age : {} seconds.",maxAge);
cookie.setMaxAge(maxAge);
cookie.setPath("/");
@@ -128,7 +112,7 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
//tomcat 8.5
cookie.setDomain(applicationConfig.getBaseDomainName());
_logger.debug("Sub Domain Name : "+"."+applicationConfig.getBaseDomainName());
_logger.debug("Sub Domain Name : .{}",applicationConfig.getBaseDomainName());
response.addCookie(cookie);
if(tokenBasedDetails.getRedirectUri().indexOf(applicationConfig.getBaseDomainName())>-1){

View File

@@ -20,9 +20,7 @@ package org.maxkey.authz.token.endpoint.adapter;
import java.util.Date;
import java.util.HashMap;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.entity.UserInfo;
import org.maxkey.entity.apps.AppsTokenBasedDetails;
import org.maxkey.util.DateUtils;
import org.maxkey.util.JsonUtils;
@@ -34,8 +32,10 @@ import org.springframework.web.servlet.ModelAndView;
public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter {
final static Logger _logger = LoggerFactory.getLogger(TokenBasedDefaultAdapter.class);
String token = "";
@Override
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
public Object generateInfo() {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
HashMap<String,String> beanMap=new HashMap<String,String>();
@@ -90,24 +90,31 @@ public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter {
beanMap.put("expires", expiresString);
String jsonString=JsonUtils.object2Json(beanMap);
_logger.debug("Token : "+jsonString);
token = JsonUtils.object2Json(beanMap);
_logger.debug("Token : {}",token);
return jsonString;
return token;
}
@Override
public String encrypt(String data, String algorithmKey, String algorithm) {
return super.encrypt(data, algorithmKey, algorithm);
public Object encrypt(Object data, String algorithmKey, String algorithm) {
token = super.encrypt(token, algorithmKey, algorithm).toString();
return token;
}
@Override
public ModelAndView authorize(UserInfo userInfo, Object app, String data,ModelAndView modelAndView) {
public ModelAndView authorize(ModelAndView modelAndView) {
modelAndView.setViewName("authorize/tokenbased_sso_submint");
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
modelAndView.addObject("action", details.getRedirectUri());
modelAndView.addObject("token",data );
modelAndView.addObject("token",token );
return modelAndView;
}
@Override
public String serialize() {
return token;
}
}

View File

@@ -19,9 +19,7 @@ package org.maxkey.authz.token.endpoint.adapter;
import java.util.Date;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.entity.UserInfo;
import org.maxkey.entity.apps.AppsTokenBasedDetails;
import org.maxkey.util.DateUtils;
import org.slf4j.Logger;
@@ -30,8 +28,10 @@ import org.springframework.web.servlet.ModelAndView;
public class TokenBasedSimpleAdapter extends AbstractAuthorizeAdapter {
final static Logger _logger = LoggerFactory.getLogger(TokenBasedSimpleAdapter.class);
String token = "";
@Override
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
public Object generateInfo() {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
String tokenUsername = userInfo.getUsername();
@@ -62,26 +62,31 @@ public class TokenBasedSimpleAdapter extends AbstractAuthorizeAdapter {
_logger.debug("UTC current Date : "+DateUtils.toUtc(currentDate));
String tokenString=tokenUsername+"@@"+DateUtils.toUtc(currentDate);
_logger.debug("Token : "+tokenString);
token = tokenUsername+"@@"+DateUtils.toUtc(currentDate);
_logger.debug("Token : {}",token);
return tokenString;
return token;
}
@Override
public String encrypt(String data, String algorithmKey, String algorithm) {
return super.encrypt(data, algorithmKey, algorithm);
public Object encrypt(Object data, String algorithmKey, String algorithm) {
token = super.encrypt(token, algorithmKey, algorithm).toString();
return token;
}
@Override
public ModelAndView authorize(UserInfo userInfo, Object app, String data,ModelAndView modelAndView) {
public ModelAndView authorize(ModelAndView modelAndView) {
modelAndView.setViewName("authorize/tokenbased_sso_submint");
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
modelAndView.addObject("action", details.getRedirectUri());
modelAndView.addObject("token",data);
modelAndView.addObject("token",token);
return modelAndView;
}
@Override
public String serialize() {
return token;
}
}