SOAP Client: Client TLS credential selection

Cantor, Scott cantor.2 at osu.edu
Wed May 13 18:16:27 EDT 2015


On 5/13/15, 10:00 PM, "Brent Putman" <putmanb at georgetown.edu> wrote:


>
>I'm trying to finish up the SOAP client.  One outstanding issue is how a 
>client TLS credential is chosen.

Ideally with essentially the same machinery we use for selecting other 
credentials.

>2) In a given instance of the SOAP client, it would be desirable for it 
>to support using multiple client TLS credentials, selected (somehow) at 
>runtime.  (The alternative being a client that supports only 1 credential 
>that is passed at client construction time).

Yes, somewhat constrained by the fact that when connection pooling is 
involved, generally that limits the control you have once existing 
connections are formed.

>For reference, what does the SP support here? Does it allow usage of 
>different credentials with different peers?

Yes. It uses the same logic, a CredentialResolver that has various inputs 
and picks the one to use. I don't think I have a way to split off signing 
from TLS at the moment.

>If we don't need/want to support multiple credentials, or if we would 
>find it acceptable to statically wire up different SOAP client instances 
>(with different creds) for different relying parties, then ignore the 
>rest of this message.  But I'll proceed on the
> assumption we do.

I suppose one could essentially "resolve" a SOAP client if that were the 
unit of configuration, but I was assuming the credential would be 
resolved, along with any other relevant settings for the SOAP client 
depending on how fancy one gets.

>Not sure if we can base anything off of issuers.  Although in Shib the 
>peer would usually be self-signed, so maybe it reduces to just a map of 
>relying parties.

Not exclusively self-signed though, and not reliably mappable back to the 
RP (e.g. SPs can share keys).

>Does anyone else know of any other possibilities with JSSE that I'm 
>missing, or other simple ideas for using the X509KeyManager interface in 
>a more or less standard way?

I guess it's nice that the hardest problem I had to solve is also the 
hardest in Java. I suppose at the end of the day, there's always signing, 
which is going to be the dominant case IdP to SP anyway. Doesn't 
necessarily apply to using this code to implement an SP, but even there, 
this is just the reason why all the other implementors abandoned client 
TLS. I was an early adopter and stubborn enough to make libcurl work, I 
guess, so I had a warped view of what was possible.

>I want to solicit thoughts and feedback on this idea.

I don't know enough of JSSE, but I've never seen it as being very robust 
certainly, so I don't imagine there's much choice but to go around it.

-- Scott



More information about the dev mailing list