use of org.maxkey.entity.apps.AppsTokenBasedDetails in project MaxKey by dromara.
the class TokenBasedDefaultAdapter method generateInfo.
@Override
public Object generateInfo() {
AppsTokenBasedDetails details = (AppsTokenBasedDetails) app;
HashMap<String, String> beanMap = new HashMap<String, String>();
beanMap.put("randomId", (new StringGenerator()).uuidGenerate());
if (details.getUserPropertys() != null && !details.getUserPropertys().equals("")) {
if (details.getUserPropertys().indexOf("userId") > -1) {
beanMap.put("userId", userInfo.getId());
}
if (details.getUserPropertys().indexOf("username") > -1) {
beanMap.put("username", userInfo.getUsername());
}
if (details.getUserPropertys().indexOf("email") > -1) {
beanMap.put("email", userInfo.getEmail());
}
if (details.getUserPropertys().indexOf("windowsAccount") > -1) {
beanMap.put("windowsAccount", userInfo.getWindowsAccount());
}
if (details.getUserPropertys().indexOf("employeeNumber") > -1) {
beanMap.put("employeeNumber", userInfo.getEmployeeNumber());
}
if (details.getUserPropertys().indexOf("department") > -1) {
beanMap.put("department", userInfo.getDepartment());
}
if (details.getUserPropertys().indexOf("departmentId") > -1) {
beanMap.put("departmentId", userInfo.getDepartmentId());
}
}
beanMap.put("displayName", userInfo.getDisplayName());
beanMap.put(WebConstants.ONLINE_TICKET_NAME, authentication.getOnlineTicket().getTicketId());
/*
* use UTC date time format
* current date plus expires minute
*/
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(currentDateTime));
beanMap.put("expires", expiresString);
token = JsonUtils.object2Json(beanMap);
_logger.debug("Token : {}", token);
return token;
}
use of org.maxkey.entity.apps.AppsTokenBasedDetails in project MaxKey by dromara.
the class TokenBasedSimpleAdapter method generateInfo.
@Override
public Object generateInfo() {
AppsTokenBasedDetails details = (AppsTokenBasedDetails) app;
String tokenUsername = userInfo.getUsername();
if (details.getUserPropertys() != null && !details.getUserPropertys().equals("")) {
if (details.getUserPropertys().indexOf("userId") > -1) {
tokenUsername = userInfo.getId();
} else if (details.getUserPropertys().indexOf("username") > -1) {
tokenUsername = userInfo.getUsername();
} else if (details.getUserPropertys().indexOf("email") > -1) {
tokenUsername = userInfo.getEmail();
} else if (details.getUserPropertys().indexOf("windowsAccount") > -1) {
tokenUsername = userInfo.getWindowsAccount();
} else if (details.getUserPropertys().indexOf("employeeNumber") > -1) {
tokenUsername = userInfo.getEmployeeNumber();
} else if (details.getUserPropertys().indexOf("department") > -1) {
tokenUsername = userInfo.getDepartmentId();
} else if (details.getUserPropertys().indexOf("departmentId") > -1) {
tokenUsername = userInfo.getDepartment();
}
}
/*
* use UTC date time format
*/
Date currentDate = new Date();
_logger.debug("UTC Local current date : " + DateUtils.toUtcLocal(currentDate));
_logger.debug("UTC current Date : " + DateUtils.toUtc(currentDate));
token = tokenUsername + "@@" + DateUtils.toUtc(currentDate);
_logger.debug("Token : {}", token);
return token;
}
use of org.maxkey.entity.apps.AppsTokenBasedDetails in project MaxKey by dromara.
the class AppsTokenBasedDetailsService method getAppDetails.
public AppsTokenBasedDetails getAppDetails(String id, boolean cached) {
AppsTokenBasedDetails details = null;
if (cached) {
details = detailsCache.getIfPresent(id);
if (details == null) {
details = getMapper().getAppDetails(id);
detailsCache.put(id, details);
}
} else {
details = getMapper().getAppDetails(id);
}
return details;
}
use of org.maxkey.entity.apps.AppsTokenBasedDetails in project MaxKey by dromara.
the class TokenBasedAuthorizeEndpoint method authorize.
@Operation(summary = "TokenBased认证接口", description = "传递参数应用ID", method = "GET")
@RequestMapping("/authz/tokenbased/{id}")
public ModelAndView authorize(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) {
ModelAndView modelAndView = new ModelAndView();
AppsTokenBasedDetails tokenBasedDetails = null;
tokenBasedDetails = tokenBasedDetailsService.getAppDetails(id, true);
_logger.debug("" + tokenBasedDetails);
Apps application = getApp(id);
tokenBasedDetails.setAdapter(application.getAdapter());
tokenBasedDetails.setIsAdapter(application.getIsAdapter());
AbstractAuthorizeAdapter adapter;
if (ConstsBoolean.isTrue(tokenBasedDetails.getIsAdapter())) {
adapter = (AbstractAuthorizeAdapter) Instance.newInstance(tokenBasedDetails.getAdapter());
} else {
adapter = (AbstractAuthorizeAdapter) new TokenBasedDefaultAdapter();
}
adapter.setAuthentication((SigninPrincipal) WebContext.getAuthentication().getPrincipal());
adapter.setUserInfo(WebContext.getUserInfo());
adapter.setApp(tokenBasedDetails);
adapter.generateInfo();
adapter.encrypt(null, tokenBasedDetails.getAlgorithmKey(), tokenBasedDetails.getAlgorithm());
if (tokenBasedDetails.getTokenType().equalsIgnoreCase("POST")) {
return adapter.authorize(modelAndView);
} else {
_logger.debug("Cookie Name : {}", tokenBasedDetails.getCookieName());
Cookie cookie = new Cookie(tokenBasedDetails.getCookieName(), adapter.serialize());
Integer maxAge = tokenBasedDetails.getExpires();
_logger.debug("Cookie Max Age : {} seconds.", maxAge);
cookie.setMaxAge(maxAge);
cookie.setPath("/");
//
// cookie.setDomain("."+applicationConfig.getBaseDomainName());
// tomcat 8.5
cookie.setDomain(applicationConfig.getBaseDomainName());
_logger.debug("Sub Domain Name : .{}", applicationConfig.getBaseDomainName());
response.addCookie(cookie);
if (tokenBasedDetails.getRedirectUri().indexOf(applicationConfig.getBaseDomainName()) > -1) {
return WebContext.redirect(tokenBasedDetails.getRedirectUri());
} else {
_logger.error(tokenBasedDetails.getRedirectUri() + " not in domain " + applicationConfig.getBaseDomainName());
return null;
}
}
}
use of org.maxkey.entity.apps.AppsTokenBasedDetails in project MaxKey by dromara.
the class TokenBasedDefaultAdapter method authorize.
@Override
public ModelAndView authorize(ModelAndView modelAndView) {
modelAndView.setViewName("authorize/tokenbased_sso_submint");
AppsTokenBasedDetails details = (AppsTokenBasedDetails) app;
modelAndView.addObject("action", details.getRedirectUri());
modelAndView.addObject("token", token);
return modelAndView;
}
Aggregations