Search in sources :

Example 6 with ResourceResolverException

use of org.apache.xml.security.utils.resolver.ResourceResolverException in project santuario-java by apache.

the class ResolverLocalFilesystem method engineResolveURI.

/**
 * {@inheritDoc}
 */
@Override
public XMLSignatureInput engineResolveURI(ResourceResolverContext context) throws ResourceResolverException {
    try {
        // calculate new URI
        URI uriNew = getNewURI(context.uriToResolve, context.baseUri);
        String fileName = ResolverLocalFilesystem.translateUriToFilename(uriNew.toString());
        InputStream inputStream = Files.newInputStream(Paths.get(fileName));
        XMLSignatureInput result = new XMLSignatureInput(inputStream);
        result.setSecureValidation(context.secureValidation);
        result.setSourceURI(uriNew.toString());
        return result;
    } catch (Exception e) {
        throw new ResourceResolverException(e, context.uriToResolve, context.baseUri, "generic.EmptyMessage");
    }
}
Also used : InputStream(java.io.InputStream) XMLSignatureInput(org.apache.xml.security.signature.XMLSignatureInput) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException) URI(java.net.URI) URISyntaxException(java.net.URISyntaxException) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException)

Example 7 with ResourceResolverException

use of org.apache.xml.security.utils.resolver.ResourceResolverException in project santuario-java by apache.

the class ResolverXPointer method engineResolveURI.

/**
 * {@inheritDoc}
 */
@Override
public XMLSignatureInput engineResolveURI(ResourceResolverContext context) throws ResourceResolverException {
    Node resultNode = null;
    Document doc = context.attr.getOwnerElement().getOwnerDocument();
    if (isXPointerSlash(context.uriToResolve)) {
        resultNode = doc;
    } else if (isXPointerId(context.uriToResolve)) {
        String id = getXPointerId(context.uriToResolve);
        resultNode = doc.getElementById(id);
        if (context.secureValidation) {
            Element start = context.attr.getOwnerDocument().getDocumentElement();
            if (!XMLUtils.protectAgainstWrappingAttack(start, id)) {
                Object[] exArgs = { id };
                throw new ResourceResolverException("signature.Verification.MultipleIDs", exArgs, context.uriToResolve, context.baseUri);
            }
        }
        if (resultNode == null) {
            Object[] exArgs = { id };
            throw new ResourceResolverException("signature.Verification.MissingID", exArgs, context.uriToResolve, context.baseUri);
        }
    }
    XMLSignatureInput result = new XMLSignatureInput(resultNode);
    result.setSecureValidation(context.secureValidation);
    result.setMIMEType("text/xml");
    if (context.baseUri != null && context.baseUri.length() > 0) {
        result.setSourceURI(context.baseUri.concat(context.uriToResolve));
    } else {
        result.setSourceURI(context.uriToResolve);
    }
    return result;
}
Also used : Node(org.w3c.dom.Node) Element(org.w3c.dom.Element) XMLSignatureInput(org.apache.xml.security.signature.XMLSignatureInput) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException) Document(org.w3c.dom.Document)

Example 8 with ResourceResolverException

use of org.apache.xml.security.utils.resolver.ResourceResolverException in project santuario-java by apache.

the class XPointerResourceResolver method engineResolveURI.

@Override
public XMLSignatureInput engineResolveURI(ResourceResolverContext context) throws ResourceResolverException {
    String v = context.uriToResolve;
    if (v.charAt(0) != '#') {
        return null;
    }
    String xpURI;
    try {
        xpURI = URLDecoder.decode(v, "utf-8");
    } catch (UnsupportedEncodingException e) {
        LOG.warn("utf-8 not a valid encoding ", e);
        return null;
    }
    String[] parts = xpURI.substring(1).split("\\s");
    int i = 0;
    Map<String, String> namespaces = new HashMap<>();
    if (parts.length > 1) {
        for (; i < parts.length - 1; ++i) {
            if (!parts[i].endsWith(")") || !parts[i].startsWith(XNS_OPEN)) {
                return null;
            }
            String mapping = parts[i].substring(XNS_OPEN.length(), parts[i].length() - 1);
            int pos = mapping.indexOf('=');
            if (pos <= 0 || pos >= mapping.length() - 1) {
                throw new ResourceResolverException("malformed namespace part of XPointer expression", context.uriToResolve, context.baseUri);
            }
            namespaces.put(mapping.substring(0, pos), mapping.substring(pos + 1));
        }
    }
    try {
        Node node = null;
        NodeList nodes = null;
        // plain ID reference.
        if (i == 0 && !parts[i].startsWith(XP_OPEN)) {
            node = this.baseNode.getOwnerDocument().getElementById(parts[i]);
        } else {
            if (!parts[i].endsWith(")") || !parts[i].startsWith(XP_OPEN)) {
                return null;
            }
            String xpathExpr = parts[i].substring(XP_OPEN.length(), parts[i].length() - 1);
            XPathFactory xpf = XPathFactory.newInstance();
            XPath xpath = xpf.newXPath();
            DSNamespaceContext namespaceContext = new DSNamespaceContext(namespaces);
            xpath.setNamespaceContext(namespaceContext);
            nodes = (NodeList) xpath.evaluate(xpathExpr, this.baseNode, XPathConstants.NODESET);
            if (nodes.getLength() == 0) {
                return null;
            }
            if (nodes.getLength() == 1) {
                node = nodes.item(0);
            }
        }
        XMLSignatureInput result = null;
        if (node != null) {
            result = new XMLSignatureInput(node);
        } else if (nodes != null) {
            Set<Node> nodeSet = new HashSet<>(nodes.getLength());
            for (int j = 0; j < nodes.getLength(); ++j) {
                nodeSet.add(nodes.item(j));
            }
            result = new XMLSignatureInput(nodeSet);
        } else {
            return null;
        }
        result.setMIMEType("text/xml");
        result.setExcludeComments(true);
        result.setSourceURI((context.baseUri != null) ? context.baseUri.concat(v) : v);
        return result;
    } catch (XPathExpressionException e) {
        throw new ResourceResolverException(e, context.uriToResolve, context.baseUri, "Problem evaluating XPath expression");
    }
}
Also used : XPath(javax.xml.xpath.XPath) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) XPathExpressionException(javax.xml.xpath.XPathExpressionException) Node(org.w3c.dom.Node) NodeList(org.w3c.dom.NodeList) UnsupportedEncodingException(java.io.UnsupportedEncodingException) XMLSignatureInput(org.apache.xml.security.signature.XMLSignatureInput) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException) XPathFactory(javax.xml.xpath.XPathFactory) DSNamespaceContext(org.apache.xml.security.test.dom.DSNamespaceContext)

Example 9 with ResourceResolverException

use of org.apache.xml.security.utils.resolver.ResourceResolverException in project santuario-java by apache.

the class ResolverDirectHTTPTest method testProxyAuthWithWrongPassword.

@Test
@Ignore
public void testProxyAuthWithWrongPassword() throws Exception {
    Document doc = XMLUtils.createDocumentBuilder(false).newDocument();
    Attr uri = doc.createAttribute("URI");
    uri.setNodeValue(url);
    ResolverDirectHTTP resolverDirectHTTP = new ResolverDirectHTTP();
    resolverDirectHTTP.engineSetProperty("http.proxy.host", proxyHost);
    resolverDirectHTTP.engineSetProperty("http.proxy.port", proxyPort);
    resolverDirectHTTP.engineSetProperty("http.proxy.username", proxyUsername);
    resolverDirectHTTP.engineSetProperty("http.proxy.password", "wrongPassword");
    ResourceResolverContext context = new ResourceResolverContext(uri, url, true);
    try {
        resolverDirectHTTP.engineResolveURI(context);
        Assert.fail("Expected ResourceResolverException");
    } catch (ResourceResolverException e) {
        Assert.assertEquals("Server returned HTTP response code: 407 for URL: " + url, e.getMessage());
    }
}
Also used : ResolverDirectHTTP(org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP) ResourceResolverContext(org.apache.xml.security.utils.resolver.ResourceResolverContext) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException) Document(org.w3c.dom.Document) Attr(org.w3c.dom.Attr) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 10 with ResourceResolverException

use of org.apache.xml.security.utils.resolver.ResourceResolverException in project santuario-java by apache.

the class ResolverDirectHTTPTest method testServerAuthWithWrongPassword.

@Test
@Ignore
public void testServerAuthWithWrongPassword() throws Exception {
    Document doc = XMLUtils.createDocumentBuilder(false).newDocument();
    Attr uri = doc.createAttribute("URI");
    uri.setNodeValue(url);
    ResolverDirectHTTP resolverDirectHTTP = new ResolverDirectHTTP();
    resolverDirectHTTP.engineSetProperty("http.basic.username", serverUsername);
    resolverDirectHTTP.engineSetProperty("http.basic.password", "wrongPassword");
    ResourceResolverContext context = new ResourceResolverContext(uri, url, true);
    try {
        resolverDirectHTTP.engineResolveURI(context);
        Assert.fail("Expected ResourceResolverException");
    } catch (ResourceResolverException e) {
        Assert.assertEquals("Server returned HTTP response code: 401 for URL: " + url, e.getMessage());
    }
}
Also used : ResolverDirectHTTP(org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP) ResourceResolverContext(org.apache.xml.security.utils.resolver.ResourceResolverContext) ResourceResolverException(org.apache.xml.security.utils.resolver.ResourceResolverException) Document(org.w3c.dom.Document) Attr(org.w3c.dom.Attr) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

ResourceResolverException (org.apache.xml.security.utils.resolver.ResourceResolverException)14 XMLSignatureInput (org.apache.xml.security.signature.XMLSignatureInput)8 Attr (org.w3c.dom.Attr)5 Document (org.w3c.dom.Document)5 IOException (java.io.IOException)4 InputStream (java.io.InputStream)3 CanonicalizationException (org.apache.xml.security.c14n.CanonicalizationException)3 TransformationException (org.apache.xml.security.transforms.TransformationException)3 ResourceResolver (org.apache.xml.security.utils.resolver.ResourceResolver)3 Test (org.junit.Test)3 Node (org.w3c.dom.Node)3 URI (java.net.URI)2 URISyntaxException (java.net.URISyntaxException)2 InvalidCanonicalizerException (org.apache.xml.security.c14n.InvalidCanonicalizerException)2 XMLSecurityException (org.apache.xml.security.exceptions.XMLSecurityException)2 Transforms (org.apache.xml.security.transforms.Transforms)2 ResourceResolverContext (org.apache.xml.security.utils.resolver.ResourceResolverContext)2 ResolverDirectHTTP (org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP)2 Ignore (org.junit.Ignore)2 Element (org.w3c.dom.Element)2