[
https://issues.apache.org/jira/browse/CXF-3705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Zhemzhitsky updated CXF-3705:
------------------------------------
Description:
It's hardly possible to extend
org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom
non-standad algorithms.
The possible solution is to refactor
org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all
algorithm suites using cxf extension mechanism, for example,
{code}
public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> {
private Bus bus;
public AlgorithmSuiteBuilder(Bus bus) {
this.bus = bus;
}
public Assertion build(Element element, AssertionBuilderFactory factory)
throws IllegalArgumentException {
SPConstants consts =
SP11Constants.SP_NS.equals(element.getNamespaceURI())
? SP11Constants.INSTANCE : SP12Constants.INSTANCE;
Element policyElem = DOMUtils.getFirstElement(element);
String algoSuiteName =
DOMUtils.getFirstElement(policyElem).getLocalName();
AlgorithmSuiteLoader loader =
bus.getExtension(AlgorithmSuiteLoader.class);
AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName, consts);
if(suite == null) {
throw new IllegalArgumentException("Algorithm suite \"" +
algoSuiteName + "\" is not registered");
}
return suite;
}
public QName[] getKnownElements() {
return new QName[]{SP11Constants.ALGORITHM_SUITE,
SP12Constants.ALGORITHM_SUITE};
}
}
{code}
{code}
public interface AlgorithmSuiteLoader {
AlgorithmSuite getAlgorithmSuite(String localName, SPConstants consts);
}
{code}
was:
It's impossible to extend
org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom
non-standad algorithms.
Sometimes it's needed to support non-standard algorithm suite. Now it's hardly
possible to do.
The possible solution is to refactor
org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all
algorithm suites using cxf extension mechanism, for example,
{code}
public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> {
private Bus bus;
public AlgorithmSuiteBuilder(Bus bus) {
this.bus = bus;
}
public Assertion build(Element element, AssertionBuilderFactory factory)
throws IllegalArgumentException {
SPConstants consts =
SP11Constants.SP_NS.equals(element.getNamespaceURI())
? SP11Constants.INSTANCE : SP12Constants.INSTANCE;
Element policyElem = DOMUtils.getFirstElement(element);
String algoSuiteName =
DOMUtils.getFirstElement(policyElem).getLocalName();
AlgorithmSuiteLoader loader =
bus.getExtension(AlgorithmSuiteLoader.class);
AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName, consts);
if(suite == null) {
throw new IllegalArgumentException("Algorithm suite \"" +
algoSuiteName + "\" is not registered");
}
return suite;
}
public QName[] getKnownElements() {
return new QName[]{SP11Constants.ALGORITHM_SUITE,
SP12Constants.ALGORITHM_SUITE};
}
}
{code}
> It's impossible to extend
> org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom
> non-standad algorithms.
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-3705
> URL: https://issues.apache.org/jira/browse/CXF-3705
> Project: CXF
> Issue Type: Improvement
> Components: WS-* Components
> Affects Versions: 2.4.1
> Reporter: Sergey Zhemzhitsky
> Labels: ws-security
>
> It's hardly possible to extend
> org.apache.cxf.ws.security.policy.model.AlgorithmSuite with a custom
> non-standad algorithms.
> The possible solution is to refactor
> org.apache.cxf.ws.security.policy.builders.AlgorithmSuiteBuilder to get all
> algorithm suites using cxf extension mechanism, for example,
> {code}
> public class AlgorithmSuiteBuilder implements AssertionBuilder<Element> {
> private Bus bus;
> public AlgorithmSuiteBuilder(Bus bus) {
> this.bus = bus;
> }
> public Assertion build(Element element, AssertionBuilderFactory factory)
> throws IllegalArgumentException {
> SPConstants consts =
> SP11Constants.SP_NS.equals(element.getNamespaceURI())
> ? SP11Constants.INSTANCE : SP12Constants.INSTANCE;
> Element policyElem = DOMUtils.getFirstElement(element);
> String algoSuiteName =
> DOMUtils.getFirstElement(policyElem).getLocalName();
> AlgorithmSuiteLoader loader =
> bus.getExtension(AlgorithmSuiteLoader.class);
> AlgorithmSuite suite = loader.getAlgorithmSuite(algoSuiteName,
> consts);
> if(suite == null) {
> throw new IllegalArgumentException("Algorithm suite \"" +
> algoSuiteName + "\" is not registered");
> }
> return suite;
> }
> public QName[] getKnownElements() {
> return new QName[]{SP11Constants.ALGORITHM_SUITE,
> SP12Constants.ALGORITHM_SUITE};
> }
> }
> {code}
> {code}
> public interface AlgorithmSuiteLoader {
> AlgorithmSuite getAlgorithmSuite(String localName, SPConstants consts);
> }
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira