We followed this suggestion and found out that Basic 256 is being asserted, but with the wrong namespace.
It is tying it to http://schemas.xmlsoap.org/ws/2005/07/securitypolicy However, the namespace in the WSDL is <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> On 9/19/14 6:16 AM, "Colm O hEigeartaigh" <cohei...@apache.org> wrote: >The AlgorithmSuite security policies are asserted if "valid" in the >AlgorithmSuitePolicyValidator: > >if (valid) { > String namespace = >algorithmSuite.getAlgorithmSuiteType().getNamespace(); > String name = >algorithmSuite.getAlgorithmSuiteType().getName(); > Collection<AssertionInfo> algSuiteAis = aim.get(new >QName(namespace, name)); > if (algSuiteAis != null) { > for (AssertionInfo algSuiteAi : algSuiteAis) { > algSuiteAi.setAsserted(true); > } > } > } else if (!valid && ai.isAsserted()) { > ai.setNotAsserted("Error in validating AlgorithmSuite >policy"); > } > >So I recommend setting a breakpoint above this + see if valid is being set >to "false". If so then find out exactly where in the "validatePolicy" >method this is happening. > >Colm. > >On Thu, Sep 18, 2014 at 8:25 PM, Longsine, Pohl <pohl_longs...@gallup.com> >wrote: > >> We followed your suggestion and put breakpoints in every method in that >> class. We could not witness any unassert happening there. >> >> Where in the CXF codebase would a Basic256 assertPolicy(...) happen in >>the >> first place? Judging by how other things are asserted (such as >>lax/strict >> layout) we would expect something like the following line to be >>somewhere >> in CXF source: >> >> assertPolicy(new >> QName(binding.getAlgorithmSuite().getName().getNamespaceURI(), >> SPConstants.ALGO_SUITE_BASIC256)); >> >> …but we can't find such a thing anywhere. We figured maybe something >>like >> that should be somewhere below the >> AbstractCommonBindingHandler.assertAlgorithmSuite() method. >> >> In fact, we can't find any use of the SPConstants.ALGO_SUITE_BASIC256 >> constant at all. >> >> >> >> >> >> On 9/18/14 4:01 AM, "Colm O hEigeartaigh" <cohei...@apache.org> wrote: >> >> >Hi, >> > >> >I don't see anything obviously wrong in the messages. If "Basic256" >>policy >> >validation is failing, then it sounds like there is a mismatch >>somewhere >> >in >> >the AlgorithmSuitePolicyValidator: >> > >> > >> >>https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob_plain;f=rt/ws/se >>c >> >>>urity/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/Al >>>go >> >rithmSuitePolicyValidator.java;hb=HEAD >> > >> >I recommend putting some breakpoints in there and see where it is >> >unasserting the policy (if this in fact is the problem). >> > >> >Colm. >> > >> >On Wed, Sep 17, 2014 at 6:05 PM, Longsine, Pohl >><pohl_longs...@gallup.com >> > >> >wrote: >> > >> >> A member of my team wrote this to pass on to you: >> >> >> >> Thank you so much for your guidance so far. >> >> >> >> We had a chance to monitor the actual request being sent and it is >>being >> >> signed and encrypted. Here is the request, response, modified wsdl >>with >> >> copied policy as suggested, and the stack trace. >> >> >> >> https://gist.github.com/themmer/b274c9f720c4dcbaec83 >> >> >> >> I believe this proves that JCE is functioning in our environment. >>Our >> >> Soap handler log unfortunately happens before signing/encryption, >>hence >> >> the confusion earlier about the request not being correct. >> >> >> >> One interesting thing: it is failing when the response is coming in >>and >> >>we >> >> are verifying the policy. What is happening is the AssertionInfo for >> >> Basic256 policy is not asserted for some reason. See stack trace in >>the >> >> above gist and the code snippet below for an explanation of what is >> >> happening in debug mode. >> >> >> >> (the following is from AssertionInfoMap.java CXF 3.0.1) >> >> >> >> Assertion ass = (Assertion)assertion; >> >> Collection<AssertionInfo> ail = getAssertionInfo(ass.getName()); >> >> boolean found = false; >> >> for (AssertionInfo ai : ail) { >> >> if (ai.getAssertion().equal(ass)) { // Expression A >> >> found = true; >> >> if (!ai.isAsserted() && !ass.isOptional()) { // Expression B, >> >>where >> >> we fail >> >> // I believe Basic 256 should be asserted since it is part >>of >> >>the >> >> Algo Suite >> >> errors.add(ass.getName()); >> >> pass = false; >> >> } >> >> } >> >> ... >> >> >> >> >> >> >> >> We are failing here in AssertionInfoMap. "Expression A" evaluates to >> >>true >> >> (where the AssertionInfo is the basic 256 assertion info from inside >> >> asymmetric binding). But then "Expression B" evaluates to false >>because >> >> it is not optional and not asserted (this would be the problem I >> >>believe). >> >> At this point it adds the error and will fail due to this. >> >> >> >> Is it possible that the assertPolicy is not called for the Asymmetric >> >> Binding with policies in the lower layers (Basic 256)? The asymmetric >> >> binding is what is failing through the debugger when verifying the >> >>policy >> >> on the incoming create sequence response. >> >> >> >> >> >> >> >> >> >> On 9/17/14 10:33 AM, "Longsine, Pohl" <pohl_longs...@gallup.com> >>wrote: >> >> >> >> >Yes, we do have JCE in place. >> >> > >> >> >Sorry about not using a pastebin. Most of those are blacklisted by >>our >> >> >draconian gateway, but I see that Github gists have somehow slipped >> >> >through the cracks, so next time I'll use that. >> >> > >> >> > >> >> > >> >> > >> >> >> >> >> >> >> >> >>On 9/16/14 6:15 PM, "Dennis Sosnoski" <d...@sosnoski.com> wrote: >> >> >> >> >> >>>I'm not sure what's going on now, Pohl. It looks like the request >> >> >>>message is being sent without security headers, and the server >> >>responds >> >> >>>anyway with a signed message. But the stack trace says the >>request is >> >> >>>not being sent in the first place because of a security assertion: >> >> >>> >> >> >>>Caused by: org.apache.cxf.ws.policy.PolicyException: These poliy >> >> >>>alternatives can not be satisfied: >> >> >>>>>{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}Basic256 >> >> >>> >> >> >>>Do you have the unlimited strength cryptography extensions >>installed >> >>in >> >> >>>your JVM? I believe you need these in order to use Basic256. That >> >>aside, >> >> >>>it would be better if you used http://pastebin.com/ or something >> >> similar >> >> >>>for your files, since it's really hard to read them in the email. >> >> >>> >> >> >>>- Dennis >> >> All information in this message is confidential and may be legally >> privileged. Only intended recipients are authorized to use it. >> > > > >-- >Colm O hEigeartaigh > >Talend Community Coder >http://coders.talend.com All information in this message is confidential and may be legally privileged. Only intended recipients are authorized to use it.