I don't think its something you can necessarily determine at the Servlet / 
ServletContext.  Since multiple pathes / Context can be routed to a single 
servlet instance, it makes sense that you ask the request 
(http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#isSecure())
 

________________________________________
From: Glen Mazza [gma...@talend.com]
Sent: Friday, January 20, 2012 9:15 AM
To: users@cxf.apache.org
Subject: Re: Https policy with spring

I don't know how accurate that is, that's why I was recommending asking
the Tomcat User's list.  For what XiLai is asking for, 98% accurate
might not be good enough.

Glen

On 01/20/2012 12:02 PM, Sergey Beryozkin wrote:
> On 20/01/12 16:35, Glen Mazza wrote:
>> I'm not sure here--if I understand you correctly, a more generic version
>> of the question you're asking is "How can a servlet determine whether it
>> is being run over https:// or not?" This might be a question better
>> asked on the Tomcat user's list. If it is not possible for a servlet to
>> be able to determine that in a formal, rigorous manner (i.e., perhaps
>> servlets are sandboxed by the servlet container so they can't know
>> whether they're running over https), then at the web service provider
>> level I don't see how it can make that determination either.
>>
>
> Would checking the request URI and seeing if it starts with 'https' do ?
>
> Sergey
>
>> Glen
>>
>> On 01/19/2012 08:35 PM, XiLai Dai wrote:
>>> Thanks Colm and Glen!
>>>
>>> but maybe my question was not clear, what we want to do was checking
>>> if the Endpoint secured by policy after adding https policy to
>>> the<jaxws:endpoint>.
>>>
>>> the java codes used for checking looks like:
>>>
>>> private boolean isSecuredByPolicy(Server server) {
>>> boolean isSecured = false;
>>>
>>> EndpointInfo ei = server.getEndpoint().getEndpointInfo();
>>>
>>> PolicyEngine pe = bus.getExtension(PolicyEngine.class);
>>> if (null == pe) {
>>> LOG.finest("No Policy engine found");
>>> return isSecured;
>>> }
>>>
>>> Destination destination = server.getDestination();
>>> EndpointPolicy ep = pe.getServerEndpointPolicy(ei, destination);
>>> Collection<Assertion> assertions = ep.getChosenAlternative();
>>> for (Assertion a : assertions) {
>>> if (a instanceof TransportBinding) {
>>> TransportBinding tb = (TransportBinding)a;
>>> TransportToken tt = tb.getTransportToken();
>>> Token t = tt.getTransportToken();
>>> if (t instanceof HttpsToken) {
>>> isSecured = true;
>>> break;
>>> }
>>> }
>>> }
>>>
>>> Policy policy = ep.getPolicy();
>>> List<PolicyComponent> pcList = policy.getPolicyComponents();
>>> for (PolicyComponent a : pcList) {
>>> if (a instanceof TransportBinding) {
>>> TransportBinding tb = (TransportBinding)a;
>>> TransportToken tt = tb.getTransportToken();
>>> Token t = tt.getTransportToken();
>>> if (t instanceof HttpsToken) {
>>> isSecured = true;
>>> break;
>>> }
>>> }
>>> }
>>>
>>> return isSecured;
>>> }
>>>
>>> but the return value always false :(
>>>
>>> Thanks!
>>> Xilai
>>> ________________________________________
>>>
>>> Information on setting up Tomcat for SSL is here:
>>> http://www.jroller.com/gmazza/entry/ssl_for_web_services
>>>
>>> HTH,
>>> Glen
>>>
>>> On 01/19/2012 05:42 AM, Colm O hEigeartaigh wrote:
>>>> Hi,
>>>>
>>>>> It can be published with no error, but from the debugging there is
>>>>> no any Assertion found, so the Https transport didn't take effect.
>>>> The policy looks ok - how are you setting up the TLS endpoint though?
>>>> Adding a TransportBinding policy does not set up TLS, it's up to the
>>>> container to do that, or else you can add a "httpj:engine-factory"
>>>> configuration if using Jetty.
>>>>
>>>> Colm.
>>>>
>>>> On Thu, Jan 19, 2012 at 4:00 AM, XiLai Dai<xl...@talend.com> wrote:
>>>>> Hello,
>>>>>
>>>>> We have a jaxws:endpoint defined like this:
>>>>> <jaxws:endpoint xmlns:tns="http://my.org/examples/";
>>>>> id="greeter_Https"
>>>>> implementor="demo.service.Greeter_HttpsImpl"
>>>>> serviceName="tns:Greeter_HttpsService"
>>>>> address="/Greeter_HttpsService">
>>>>> <jaxws:features>
>>>>> <p:policies>
>>>>> <wsp:Policy>
>>>>> <wsp:ExactlyOne>
>>>>> <wsp:All>
>>>>> <sp:TransportBinding
>>>>> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";>
>>>>> <wsp:Policy>
>>>>> <sp:TransportToken>
>>>>> <wsp:Policy>
>>>>> <sp:HttpsToken RequireClientCertificate="false"/>
>>>>> </wsp:Policy>
>>>>> </sp:TransportToken>
>>>>> </wsp:Policy>
>>>>> </sp:TransportBinding>
>>>>> </wsp:All>
>>>>> </wsp:ExactlyOne>
>>>>> </wsp:Policy>
>>>>> </p:policies>
>>>>> </jaxws:features>
>>>>> </jaxws:endpoint>
>>>>>
>>>>> It can be published with no error, but from the debugging there is
>>>>> no any Assertion found, so the Https transport didn't take effect.
>>>>> Can someone take a look what's wrong with the definition of policy?
>>>>> Thanks in advance.
>>>>>
>>>>> Regards.
>>>>> Xilai
>>>>
>>>
>>> --
>>> Glen Mazza
>>> Talend Community Coders - coders.talend.com
>>> blog: www.jroller.com/gmazza
>>>
>>
>>
>
>


--
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza

Reply via email to