Search in sources :

Example 1 with AppsTokenBasedDetails

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;
}
Also used : StringGenerator(org.maxkey.util.StringGenerator) HashMap(java.util.HashMap) AppsTokenBasedDetails(org.maxkey.entity.apps.AppsTokenBasedDetails) DateTime(org.joda.time.DateTime) Date(java.util.Date)

Example 2 with AppsTokenBasedDetails

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;
}
Also used : AppsTokenBasedDetails(org.maxkey.entity.apps.AppsTokenBasedDetails) Date(java.util.Date)

Example 3 with AppsTokenBasedDetails

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;
}
Also used : AppsTokenBasedDetails(org.maxkey.entity.apps.AppsTokenBasedDetails)

Example 4 with AppsTokenBasedDetails

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;
        }
    }
}
Also used : AbstractAuthorizeAdapter(org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter) TokenBasedDefaultAdapter(org.maxkey.authz.token.endpoint.adapter.TokenBasedDefaultAdapter) Cookie(javax.servlet.http.Cookie) ModelAndView(org.springframework.web.servlet.ModelAndView) AppsTokenBasedDetails(org.maxkey.entity.apps.AppsTokenBasedDetails) Apps(org.maxkey.entity.apps.Apps) Operation(io.swagger.v3.oas.annotations.Operation) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 5 with AppsTokenBasedDetails

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;
}
Also used : AppsTokenBasedDetails(org.maxkey.entity.apps.AppsTokenBasedDetails)

Aggregations

AppsTokenBasedDetails (org.maxkey.entity.apps.AppsTokenBasedDetails)8 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)3 ModelAndView (org.springframework.web.servlet.ModelAndView)3 Date (java.util.Date)2 Operation (io.swagger.v3.oas.annotations.Operation)1 HashMap (java.util.HashMap)1 Cookie (javax.servlet.http.Cookie)1 DateTime (org.joda.time.DateTime)1 AbstractAuthorizeAdapter (org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter)1 TokenBasedDefaultAdapter (org.maxkey.authz.token.endpoint.adapter.TokenBasedDefaultAdapter)1 Apps (org.maxkey.entity.apps.Apps)1 StringGenerator (org.maxkey.util.StringGenerator)1