public String getSpecificAuthChainName(HttpServletRequest request) { for (String specificAuthChainName : specificAuthChains.keySet()) { SpecificAuthChainDescriptor desc = specificAuthChains.get(specificAuthChainName); List<Pattern> urlPatterns = desc.getUrlPatterns(); if (!urlPatterns.isEmpty()) { // test on URI String requestUrl = request.getRequestURI(); for (Pattern pattern : urlPatterns) { Matcher m = pattern.matcher(requestUrl); if (m.matches()) { return specificAuthChainName; } } } Map<String, Pattern> headerPattern = desc.getHeaderPatterns(); for (String headerName : headerPattern.keySet()) { String headerValue = request.getHeader(headerName); if (headerValue != null) { Matcher m = headerPattern.get(headerName).matcher(headerValue); if (m.matches()) { return specificAuthChainName; } } } } return null; }
public List<String> getAuthChain(HttpServletRequest request) { if (specificAuthChains == null || specificAuthChains.isEmpty()) { return authChain; } String specificAuthChainName = getSpecificAuthChainName(request); SpecificAuthChainDescriptor desc = specificAuthChains.get(specificAuthChainName); if (desc != null) { return desc.computeResultingChain(authChain); } else { return authChain; } }