Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Security > Impersonated login to web service from outside domain

Reply
Thread Tools

Impersonated login to web service from outside domain

 
 
uggis
Guest
Posts: n/a
 
      05-11-2004
I'm having trouble connecting to a web service through a web server,
when using a client not part of the same domain as the servers.

The setup is as follows:
A client connects to a web server configured with windows
authentication and impersonate enabled. The web server connects to a
web service (also windows authentication) on a different server also
on the domain. The impersonated user?s credentials are used when
connecting to the web service (accomplished by apiService.Credentials
= System.Net.CredentialCache.DefaultCredentials). This works fine as
long as the client computer is part of the same domain as the two
servers. However, if the client is not part of the domain (logs on to
the domain using the standard windows pop up) the following error is
displayed:

There was an error downloading 'path/Service.asmx'

When I view the User.Identity.Name and the
System.Security.Principal.WindowsIdentity.GetCurre nt().Name on the web
server, they both show the correct impersonated user, both when using
a client from outside the domain and when using one inside the domain.

The impersonated user is shown correctly on the web service server?s
log, when the client on the domain is used:

2004-05-10 13:34:30 xx.xx.47.7 GET Service.asmx - 80 domain\username
xx.xx.47.84 Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.573)
200 0 0

No user is shown in the logs when a client outside the domain is used:

2004-05-10 13:34: xx.xx.47.7 GET Service.asmx - 80 - xx.xx.47.84
Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.573)
401 2 2148074254

Can anyone tell me why this happens? Is there a reason for the two
behaving differently? It seems to me that DefaultCredentials does not
get hold of the credentials when a client from outside the domain is
used. Is this correct? Is there a way to get around this problem?

Any help is appreciated
-uggis-
 
Reply With Quote
 
 
 
 
Paul Glavich [MVP - ASP.NET]
Guest
Posts: n/a
 
      05-11-2004
Not sure but here is an educated guess.

I am assuming you are on Win2000 or better and are using Kerberos protocol.
The account you are using is marked for delegation and thus succeeds when
the client is part of the domain group.

When not part of the domain group, no KDC (Key Distribution centre) can be
located to grant authentication tickets that can also be delegated, so the
integrated windows auth fails.

You can try creating an identical local user on the server (as the one you
are using on the client - same id/pwd) but while this may successfully
authenticate on the web user and show the user id you are expecting, the
next call to the web service (ie. the process requiring the credentials to
be delegated may fail) as it will probably drop back to NTLM if no KDC can
be found, and NTLM does not support delegation.

Any other windows server gurus care to clarify? Ken...?

--
- Paul Glavich
Microsoft MVP - ASP.NET


"uggis" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> I'm having trouble connecting to a web service through a web server,
> when using a client not part of the same domain as the servers.
>
> The setup is as follows:
> A client connects to a web server configured with windows
> authentication and impersonate enabled. The web server connects to a
> web service (also windows authentication) on a different server also
> on the domain. The impersonated user?s credentials are used when
> connecting to the web service (accomplished by apiService.Credentials
> = System.Net.CredentialCache.DefaultCredentials). This works fine as
> long as the client computer is part of the same domain as the two
> servers. However, if the client is not part of the domain (logs on to
> the domain using the standard windows pop up) the following error is
> displayed:
>
> There was an error downloading 'path/Service.asmx'
>
> When I view the User.Identity.Name and the
> System.Security.Principal.WindowsIdentity.GetCurre nt().Name on the web
> server, they both show the correct impersonated user, both when using
> a client from outside the domain and when using one inside the domain.
>
> The impersonated user is shown correctly on the web service server?s
> log, when the client on the domain is used:
>
> 2004-05-10 13:34:30 xx.xx.47.7 GET Service.asmx - 80 domain\username
> xx.xx.47.84

Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.
573)
> 200 0 0
>
> No user is shown in the logs when a client outside the domain is used:
>
> 2004-05-10 13:34: xx.xx.47.7 GET Service.asmx - 80 - xx.xx.47.84
>

Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.
573)
> 401 2 2148074254
>
> Can anyone tell me why this happens? Is there a reason for the two
> behaving differently? It seems to me that DefaultCredentials does not
> get hold of the credentials when a client from outside the domain is
> used. Is this correct? Is there a way to get around this problem?
>
> Any help is appreciated
> -uggis-



 
Reply With Quote
 
 
 
 
Ken Schaefer
Guest
Posts: n/a
 
      05-13-2004
I think Paul's analysis is spot on. Have you considered using Basic Auth +
SSL?

I don't know if creating a local user on the webserver will work, because
that local user can't be assigned permissions to remote resources.

Cheers
Ken



"Paul Glavich [MVP - ASP.NET]" <(E-Mail Removed)-NOSPAM> wrote in
message news:(E-Mail Removed)...
: Not sure but here is an educated guess.
:
: I am assuming you are on Win2000 or better and are using Kerberos
protocol.
: The account you are using is marked for delegation and thus succeeds when
: the client is part of the domain group.
:
: When not part of the domain group, no KDC (Key Distribution centre) can be
: located to grant authentication tickets that can also be delegated, so the
: integrated windows auth fails.
:
: You can try creating an identical local user on the server (as the one you
: are using on the client - same id/pwd) but while this may successfully
: authenticate on the web user and show the user id you are expecting, the
: next call to the web service (ie. the process requiring the credentials to
: be delegated may fail) as it will probably drop back to NTLM if no KDC can
: be found, and NTLM does not support delegation.
:
: Any other windows server gurus care to clarify? Ken...?
:
: --
: - Paul Glavich
: Microsoft MVP - ASP.NET
:
:
: "uggis" <(E-Mail Removed)> wrote in message
: news:(E-Mail Removed) om...
: > I'm having trouble connecting to a web service through a web server,
: > when using a client not part of the same domain as the servers.
: >
: > The setup is as follows:
: > A client connects to a web server configured with windows
: > authentication and impersonate enabled. The web server connects to a
: > web service (also windows authentication) on a different server also
: > on the domain. The impersonated user?s credentials are used when
: > connecting to the web service (accomplished by apiService.Credentials
: > = System.Net.CredentialCache.DefaultCredentials). This works fine as
: > long as the client computer is part of the same domain as the two
: > servers. However, if the client is not part of the domain (logs on to
: > the domain using the standard windows pop up) the following error is
: > displayed:
: >
: > There was an error downloading 'path/Service.asmx'
: >
: > When I view the User.Identity.Name and the
: > System.Security.Principal.WindowsIdentity.GetCurre nt().Name on the web
: > server, they both show the correct impersonated user, both when using
: > a client from outside the domain and when using one inside the domain.
: >
: > The impersonated user is shown correctly on the web service server?s
: > log, when the client on the domain is used:
: >
: > 2004-05-10 13:34:30 xx.xx.47.7 GET Service.asmx - 80 domain\username
: > xx.xx.47.84
:
Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.
: 573)
: > 200 0 0
: >
: > No user is shown in the logs when a client outside the domain is used:
: >
: > 2004-05-10 13:34: xx.xx.47.7 GET Service.asmx - 80 - xx.xx.47.84
: >
:
Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+ Protocol+1.1.4322.
: 573)
: > 401 2 2148074254
: >
: > Can anyone tell me why this happens? Is there a reason for the two
: > behaving differently? It seems to me that DefaultCredentials does not
: > get hold of the credentials when a client from outside the domain is
: > used. Is this correct? Is there a way to get around this problem?
: >
: > Any help is appreciated
: > -uggis-
:
:


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
help with pix inside->outside + dmz->outside + inside->outside->dmz Jack Cisco 0 09-19-2007 01:57 AM



Advertisments