Home All Groups Group Topic Archive Search About

Web Services and Access Control

Author
5 May 2005 9:42 AM
Francesco
We are developing a distributed application, made up of several components
installed on several machines talking to one another (via SOAP for example,
ora via .NET remoting).

Suppose those components expose some methods to the outside world: this
rises two problems.

1) A malicious user could create its own client component and call a public
method which, for example, adds 1000$ to a bank account. Authorized
components legally use tha same method, but how do we distinguish between
authorized and not-authorized callers? First idea coming on my mind: each
method receives a parameter identifying the caller (an MD5 hash of username
and password, for example). What do you think about it? I don't like this
solution very much as it seems redundant to me, but I just can't come up with
anything better.

2) Packet sniffers. Is an encrypted network layer the only solution?

I know that assemblies can be signed: could this be helpful? How does the
signing work?

I know there's a lot of documentation on the net, I'km asking here because I
got lost among documents...

Thank you for any help.

Best regards,
Francesco.

Author
5 May 2005 10:35 AM
Dominick Baier [DevelopMentor]
Hello Francesco,

i guess we need more info

how to host your remoting component, web services are hosted in IIS6

How do you do authentication?? Are you using Windows Accounts?

This is not only a problem if you expose those methods to the outside world
- insiders are the biggest threat nowadays...

---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com

Show quoteHide quote
> We are developing a distributed application, made up of several
> components installed on several machines talking to one another (via
> SOAP for example, ora via .NET remoting).
>
> Suppose those components expose some methods to the outside world:
> this rises two problems.
>
> 1) A malicious user could create its own client component and call a
> public method which, for example, adds 1000$ to a bank account.
> Authorized components legally use tha same method, but how do we
> distinguish between authorized and not-authorized callers? First idea
> coming on my mind: each method receives a parameter identifying the
> caller (an MD5 hash of username and password, for example). What do
> you think about it? I don't like this solution very much as it seems
> redundant to me, but I just can't come up with anything better.
>
> 2) Packet sniffers. Is an encrypted network layer the only solution?
>
> I know that assemblies can be signed: could this be helpful? How does
> the signing work?
>
> I know there's a lot of documentation on the net, I'km asking here
> because I got lost among documents...
>
> Thank you for any help.
>
> Best regards,
> Francesco.
Author
5 May 2005 11:37 AM
Francesco
Yes, I was thinking about insiders too, however the concept is the
same.

We still haven't deployed anything, but I think we can safely suppose
that our web services are hosted in IIS and that we have a component
which manages authentication (I wouldn't use Windows accounts). Once a
user is authenticated, I guess the problem is passing the info to the
other components, which takes us back to passing a "security token"
parameter to all methods. Or maybe a cookie. Am I missing something
here?

Thank you.
Author
5 May 2005 4:55 PM
Dominick Baier [DevelopMentor]
Hello Francesco,

what kind of users do you have? corporate / external - do the all have domain
accounts, by chance?

Or do you have a user database?

the story for remoting and web services is quite different. do you use both?


---------------------------------------
Dominick Baier - DevelopMentor
http://www.leastprivilege.com

Show quoteHide quote
> Yes, I was thinking about insiders too, however the concept is the
> same.
>
> We still haven't deployed anything, but I think we can safely suppose
> that our web services are hosted in IIS and that we have a component
> which manages authentication (I wouldn't use Windows accounts). Once a
> user is authenticated, I guess the problem is passing the info to the
> other components, which takes us back to passing a "security token"
> parameter to all methods. Or maybe a cookie. Am I missing something
> here?
>
> Thank you.
>