Well, maybe it's reasonable to create RFE for this and try to impelment  
extenstion prototype ?

> Hi,
>
> I'm not sure. If GrizzlyServerCall is running from the same thread the
> SSLReadFilter is used, SSLReadFilter.doPeerCertificateChain(...), with
> the selection key in the GrizzlyServerCall should work.
>
> What you need ultimately is to get hold of the SSLSession (via SSLEngine
> or SSLSocket), invalidate this session, re-set the want/need parameter,
> re-start the handshake (and make sure it has completed before  
> proceeding).
>
> I think the biggest problem, from the Restlet point of view, is that the
> higher level classes (Restlet/Resource/...) would need somehow to be
> able to get hold of the HttpServerCall to trigger this (and supporting
> this feature would also depend on the connector implementation).
> This would be something unusual compared with the rest of the
> architecture of the Restlet framework. I'm not sure what the rest of the
> community (in particular Jerome and Thierry) would think about that. I'd
> be happy to assist, but I'm not sure how big the modifications in the
> API and Restlet architecture would be.
>
>
> Best wishes,
>
> Bruno.
>
> Evgeny Shepelyuk wrote:
>> Hi
>> Thnx for this answert
>> I have one small request
>> Can you point to Grizzly classes how this goal can be achieved ?
>>
>>
>>> Hi Evgeny,
>>>
>>> Evgeny Shepelyuk wrote:
>>>> Hello,
>>>>
>>>> I'm using Jetty as restlet HTTP engine with SSL enabled and client's
>>>> certificate auth.
>>>> Probabaly it's more related to Jetty but is this possible to make  
>>>> server
>>>> only ask
>>>> for certificates only for certain URL.
>>>>
>>>> I'm NOT USING needClientAuthentication, so certificate is not  
>>>> mandatory,
>>>> but
>>>> what i want is following
>>>>
>>>> - for certain resources still use HTTPS, but never let browser to ask
>>>> for
>>>> client's certificate.
>>>>
>>>> Only way i сan see now - is creating 2 HTTPS connectors and run 2  
>>>> server
>>>> sockets within restlet app.
>>>>
>>>
>>> In principle, this can be achieved by re-negotiating the handshake.
>>>
>>> This is something that Tomcat supports if the listening socket isn't
>>> configured to want or need authentication but CLIENT-CERT is used  
>>> within
>>> the webapp.
>>> As far as I know, Jetty (as a container) doesn't support it. I don't
>>> think its API supports it either. The Grizzly library has some support
>>> for this mechanism.
>>> The Restlet API doesn't support it at the moment. Currently, the client
>>> certificate is populated when the handler is set up (when the socket is
>>> connected), after that, the upper layers (Application/Resource/...)
>>> can't talk back to the socket to tell it to re-negotiate.
>>>
>>> This is not impossible, but it would require some changes in the API,  
>>> in
>>> particular HttpServerCall and the way the client certificate is then
>>> passed to the request attributes.
>>>
>>> I also reported a bug about this using Glassfish/Grizzly (nothing
>>> Restlet-specific) a few months ago; I haven't tried more recently.
>>> https://grizzly.dev.java.net/issues/show_bug.cgi?id=416
>>> This would definitely be a problem to implement this feature in Restlet
>>> if the libraries used by the connectors don't support it.
>>>
>>>
>>> A possible workaround might be to use Restlet within Tomcat and to use
>>> CLIENT-CERT for the URI patterns (defined in web.xml) that you know  
>>> will
>>> want client-certificate authentication.
>>>
>>>
>>> Best wishes,
>>>
>>> Bruno.
>>>
>>> ------------------------------------------------------
>>> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2385222
>>>
>>
>>
>>
>
> ------------------------------------------------------
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2385695
>



-- 
Regards,
Evgeny Shepelyuk

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2385928

Reply via email to