ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP SSL authentication

Post new topic  Reply to topic
 SOAP SSL authentication « View previous topic :: View next topic » 
Author Message
john01
PostPosted: Wed Jun 16, 2010 12:46 pm    Post subject: SOAP SSL authentication Reply with quote

Novice

Joined: 16 Jun 2010
Posts: 21
Location: PT

Hi,

I am using WMB 7.0.

I have a web service implemented with SOAP nodes that use SSL authentication with certificates.
For each client I have a different certificate installed, the SSL authentication mechanism picks the right certificate each time a client connects.
The Web Service is working like it should.

However, after the SOAPInput node, I would like to know which certificate was used in each client SSL authentication.

My aim is to verify that the client identification in the message matches with the corresponding certificate, preventing possible client impersonations.

Thanks in advance.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Wed Jun 16, 2010 9:08 pm    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

You've already done that by using different certificates. That is the whole idea of two part keys. You give one party half. You keep the other.

Once the key exchange has taken place, you have a trusted connection.

I suppose you could do something with WebServices Security but I'm know sure.

It just sounds to me like you are being overly cautious.
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
john01
PostPosted: Thu Jun 17, 2010 1:53 am    Post subject: Reply with quote

Novice

Joined: 16 Jun 2010
Posts: 21
Location: PT

Here is an example of the issue:
Imagine that a client A connects to the web service successfully. Now he is authenticated by SSL layer, but (here is the problem) he can send a request on behalf of a Client B.
If I don’t check that client mentioned inside the request (e.g. client A) is the same of the authentication time (e.g. cert A) I have a problem...
Back to top
View user's profile Send private message
Vitor
PostPosted: Thu Jun 17, 2010 6:07 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

john01 wrote:
but (here is the problem) he can send a request on behalf of a Client B.


How? You know he's Client A (because you've authenticated him). He might be able to send a request on behalf of Client B but only because your system is allowing that. He can't impersonate Client B, which is the point.

If A is not allowed to send requests on behalf of B (or anyone else) prevent that.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
smdavies99
PostPosted: Thu Jun 17, 2010 6:15 am    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

Here's my take on the problem

Both A & B have their own keys allowing them to connect to the same service
Inside the Flow, how can the flow validate that the request is really from B and not A impersonating B.

IMHO, there are TWO possible ways to solve this.
1) Create TWO different Services and only give one name to A & B. Make each service contract(WSDL) sloghtly different. Then if they impersonate the other user they will use their own contract data thus causing a SOAP fault.

OR (I'm not sure here)
Look at the HTTP Header in the message. This should contain the sender url.
This can be validated in the flow. AFAIK (And I've not really looked) there is a Transport header as well as the SOAP header in the message folders.

I'm sure others with a greater understanding here will correct me if I'm wrong (most likely)
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
john01
PostPosted: Thu Jun 17, 2010 7:02 am    Post subject: Reply with quote

Novice

Joined: 16 Jun 2010
Posts: 21
Location: PT

Vitor wrote:

If A is not allowed to send requests on behalf of B (or anyone else) prevent that.


Actually, that is what I'm trying to achieve.

smdavies99 wrote:

Both A & B have their own keys allowing them to connect to the same service
Inside the Flow, how can the flow validate that the request is really from B and not A impersonating B.


Exactly, that's correct.

smdavies99 wrote:

IMHO, there are TWO possible ways to solve this.
1) Create TWO different Services and only give one name to A & B. Make each service contract(WSDL) sloghtly different. Then if they impersonate the other user they will use their own contract data thus causing a SOAP fault.

That could be a solution, but I have too many clients using the same service.

smdavies99 wrote:

OR (I'm not sure here)
Look at the HTTP Header in the message. This should contain the sender url.
This can be validated in the flow. AFAIK (And I've not really looked) there is a Transport header as well as the SOAP header in the message folders.

I'm sure others with a greater understanding here will correct me if I'm wrong (most likely)


I've looked up inside all message folders for something related with client information and I've found nothing. But maybe exists some other folder... Can anyone please tell me which folder should I look for?
Or suggest another way of solving this problem.

Thanks!
Back to top
View user's profile Send private message
Vitor
PostPosted: Thu Jun 17, 2010 9:28 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

So your setup doesn't authenticate a given user, just that he's a member of an authorised group of users who have been given the correct key for the service? So when you said:

Quote:
Imagine that a client A connects to the web service successfully. Now he is authenticated by SSL layer


in actuallity he is not authenticated. Someone has been authenticated but you can't tell who.

Do I have the proverbial stick by the right end here?
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Thu Jun 17, 2010 10:02 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=/com.ibm.etools.mft.doc/ap04010_.htm
Back to top
View user's profile Send private message
john01
PostPosted: Thu Jun 17, 2010 10:03 am    Post subject: Reply with quote

Novice

Joined: 16 Jun 2010
Posts: 21
Location: PT

Vitor wrote:
So your setup doesn't authenticate a given user, just that he's a member of an authorised group of users who have been given the correct key for the service? So when you said:

Quote:
Imagine that a client A connects to the web service successfully. Now he is authenticated by SSL layer


in actuallity he is not authenticated. Someone has been authenticated but you can't tell who.

Do I have the proverbial stick by the right end here?


In fact the client is authorized by the SSL layer but inside the flow I don't know who he is.
I should not trust the message composed by the client, it might just tell me it's from somebody else, I've no way of confirming.
But if I knew which public key the SSL layer used in the authentication, then I could verify.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu Jun 17, 2010 12:55 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

Require the clients to sign their request with their private key.
You can then verify the signature with the client's public key.
Whichever matches is the client sending the request...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
john01
PostPosted: Mon Jun 21, 2010 9:04 am    Post subject: Reply with quote

Novice

Joined: 16 Jun 2010
Posts: 21
Location: PT

Well, as far as I understood seems that WS-Security is more useful than SSL in this situation.

Will there be a performance decrease but ok there's no other way around, right?

Thanks for all the comments btw.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAP SSL authentication
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.