Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Steven L <StevenL@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 14 Jul 2006 02:05:01 -0700
Hi William - i'm probably taking advantage of you now but...
This is what i have already done. It works fine for WSE clients but for
non-WSE clients, this causes a problem.
I almost have it working and can get it working if i do NOT use the
SoapActor - which means non WSE clients can go via routing. In the case of
WSE clients though, i need to set the EndPoint as follows:
service.Destination = new
Microsoft.Web.Services3.Addressing.EndpointReference(
new Uri("http://localhost:4377/RelayService/MyWS.asmx"),
new Uri("http://localhost:19949/WebService/MyWS.asmx"));
But I don't really want clients knowing the "Via" as it si supposed to be
seamless - i.e. they only know the routing address.
I'm working on it through the day so any ideas please let me know.
regards,
Steven
http://stevenR2.com
"Softwaremaker" wrote:
I dont have WSE3.0 installed on this machine I am on right now: This is how.
you do it in WSE 2.0 (via my article):
<SoapActor("http://localhost/dotnetproj/securesoapnodechain/sr1/sr1route.ash
x"), _
System.Web.Services.WebService(Namespace:="http://demos.softwaremaker.net/Se
cureSOAPNodeChain/index")> _
Public Class index
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function Whatever (something)
End Function
End Class
Besides changing the default namespace generated by Visual Studio .NET 2003
to any arbitrary string you prefer to use, another important thing to take
note of is the addition of the SoapActor attribute into the code. This is an
important attribute to add, as it indicates itself as the recipient of a
WS-Addressing header element:
When you annotate the service with @SoapActor=routerURI, you are telling it
to be the recipient of a message that has the routerURI information in the
wsa:To header. How the router routes and where it routes is transparent to
the service consumers. The service consumers just sends it to the router. To
them, the routing service is It. Therefore, the actual service needs to
"correlate" itself with the routerURI information somehow. In WSE 2.0, it is
the @SoapActor :) Look for the same mechanisms in WSE 3.0 :)
--
Thank you.
Regards,
William Tay
http://www.softwaremaker.net/blog
=========================================
"Steven L" <StevenL@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:E2A04D30-42F7-4A1D-9A18-5422396FEC2A@xxxxxxxxxxxxxxxx
William - great article :) With your help I managed to see how easy it isto
get this working - by overriding the ProcessrequestMessage() in therouter.
Works fine.because
However.... things are now working a little differently. The WSE will not
work now as the address is is given expects a SoapActor of the routing
address at the target endpoint. I can't use this in the nonWSE client
"The <wsa:To> header must match the actor URI value of the web service.".client
So two questions.
(a) I can clearly get this working by figuring out when i have a WSE
(and delegate to the base) or a non_WSE client (and return a reference tothe
target endpoint). Is this good practice? Wuld i be better osmhoedetermining
WS-A compliant clients and delegating their calls?It
(b) I am reading your paper over the course of the day, but in a nutshell,
what am i missing in not calling the base of the ProcessRequestMessage()?
obviously does *something* because i get a "WS-A message header" typeerror
when i leave it in. Does it simply parse the address and return themy
corresponing URI as defined in the referralCache (in which can i just need
own referralCache class) or does it do a bunch of other stuff?good
Apologies if you have this in your paper - a lot of developers here are
writing services on the assumption that my decision to use routing is a
one, so i want to make sure i'm not missing anything :)We
cheers,
steven
http://stevenR2.com
"Softwaremaker" wrote:
Hi Steven,
My article was written to model a real-world system I was involved in :)
adidnt have controls over (all) the desktops, which is why we needed the
routing systems to inject goo into it ;) The principles are the same in
areWSE3.0 or WCF world.
You will need minimally the wsa headers. Of course, I am assuming you
need todealing with anonymous clients. You will have your hands full if you
wsainject wss headers :)
Having said that - secured routing systems will need you to sign those
callsheaders - so that is something you have to do as well if the policy
to befor it.
--
Thank you.
Regards,
William Tay
http://www.softwaremaker.net/blog
=========================================
"Steven L" <StevenL@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:9990E6BE-8C58-4F7E-9951-0B8CD11BB251@xxxxxxxxxxxxxxxx
Hi William - that article is a good pointer, but looks primarily atrouting
WSE 2.0 clients over a WSE 2.0 routing architecture.
I know the WSE client adds headers - it is the wsa Headers that need
toset by clients - that is the core point of what i need to know. I need
Iknow what these are as other clients (non-WSE) will NEED to set them.
knowingunderstand the architecure needs them, but that doesn't help me in
wouldn'twhat to set.
Once the correct headers are sent to the WSE routing service i
WSEhave
to DO anything else (this is WSE framework stuff now) as it works with
ofproxy generated clients *without doing anything else*.need
I will parse the article to see if it has some details on what headers
to be set, but i'd love to see a real world article where all lof your
clients aren't all under your control (which I suspect is the majority
vanillathe
planet!).
Thanks for the article pointer though - if you have any other related
articles in your favourites, please let me know.
regards,
steven
http://stevenR2.com
"Softwaremaker" wrote:
Pardon me if I am wrong in understanding the requirements.
Like what Pablo had said, the proxies inherits differently from
messagesasp.net web services and those proxies injects headers into the
toendpointtransparent to you. It seems like the Routing service (hop-2-hop
is).scenario) is expecting a s:Message with s:Headers (wsa Headers to be
specific. For example, it needs to know where the s:FinalDestination
beforeUltimately, the s:Intermediary SHOULD remove all processed headers
forwarding it to the next node so the s:FinalDestination has no part
knowplay
(whichhere.
In other words, you are trying to make use of a routing architecture
withoutis what SOAP is all about actually ... that POX/REST cannot do well)
thosethe required headers. You may need to introduce any layer of
abstraction/indirection to make this work. You would have to inject
wsa goo into your s:Message one way or another for the Router to
bewhat
headersyou intend to do. In other words, you may need to write your own wsa
to the s:Message before it touches the wire. SOAP Extensions should
asable
to do that. It would be a lot of work for you if need to sign them
http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwse/html/securesoapnode.aspwell
;)
"Message
hth.
--
Thank you.
Regards,
William Tay
http://www.softwaremaker.net/blog
=========================================
"Steven L" <StevenL@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:9F43B081-2777-4434-AA22-A750428C677B@xxxxxxxxxxxxxxxx
Hi William - either you are or I am :)
I do have a single end point - the problem is that I get a
clientInformation
Header Required" when i call the routing service from a non-WSE
toproxy.
All i want to know is how to get round this. Are you saying i need
WSEdo
client?something on the server rather that set one or two headers on the
service
You mention secure/insecure - why is that? I simply have a routing
serviceand haven't moved to attch any security to it - a very basic web
end
point which i am simply accessing from clients via an intermediate
....routing configuration.
I actually implemented exactly as stated in the WSE patterns book
WS-Addressingbut
unfortunately they didn't details how to actually *use*
implements afor
non-WSE clients.
steven
http://stevenR2.com
"Softwaremaker" wrote:
Why not let your routing service (I assume it probably
routewell)single
routing interface: ProcessMessage(m) and has a routing table as
check
the contents (Content-based) for the necessary s:headers and
handleit to
the
differentendpoint that can process it ?
In other words, you will have the same service (sort of) using 2
endpoints (one with security, one without) and they both can
deploythe
specific implementations that are required. You may want to
cloud,the
non-secured ones internally and the secured ones facing the
WCFfor
example. This is akin to the address/bindings/contracts model
servicedeploys.
It is difficult and I dont see the point of having a single
anendpoint
being able to handle secured and unsecured messages. Seems like
with -firstafterthought to me. What is the motivation of securing it in the
place
?
Am I missing something ?
--
Thank you.
Regards,
William Tay
http://www.softwaremaker.net/blog
=========================================
"Steven L" <StevenL@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:724973C8-600D-4FD2-AD76-0FF5F814645B@xxxxxxxxxxxxxxxx
Gracias Pablo.
The pipeline process is something i'm reasoable familiar
generateddidn't
realise there was such a significant difference in the
- References:
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Pablo Cibraro
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Steven L
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Softwaremaker
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Steven L
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Softwaremaker
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Steven L
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Softwaremaker
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Steven L
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- From: Softwaremaker
- Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- Prev by Date: Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- Next by Date: Re: The message must contain a wsa:To header
- Previous by thread: Re: Ws-Addressing - WSE and vanilla Web Service Proxies
- Next by thread: friendly error messages for usernameForCertificateSecurity
- Index(es):
Relevant Pages
|
Loading