[vb.net] [iis] System.Net.WebClient geeft 401

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Ik probeer vanaf mijn asp.net site een XML bestand te posten naar een andere website.
Die site gebruikt Active Directory integrated security, en daar lijk ik niet doorheen te komen.

Als ik de juiste inloggegevens gebruik, krijg ik melding "(401) Unauthorized"
Als ik onjuiste inloggegevens gebruik, krijg ik de melding "The login attempt failed"

Ik heb de volgende code gebruikt:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       Const hostname As String = "http://hostname/pagina.asp"
        Const Username As String = "loginnaam"
        Const Pass As String = "wachtwoord"
        Const Domain As String = "domeinnaam"
        Dim web As New System.Net.WebClient()
        'Dim web As New System.Net.HttpWebRequest 'worksn't

        web.Headers.Add("Content-Type", "multipart/form-data")

        Dim d As Byte() = System.Text.Encoding.ASCII.GetBytes(Me.GetXMLstring)

'        Dim nc As New System.Net.NetworkCredential
'        Dim cc As New System.Net.CredentialCache
'        cc.Add(New Uri(hostname), "Kerberos", New System.Net.NetworkCredential(Username, Pass, Domain))
        'web.UseDefaultCredentials = True
        'web.Credentials = cc

        web.Credentials = New System.Net.NetworkCredential(Username, Pass, Domain)

        'web.UseDefaultCredentials = True
        Dim res As Byte() = web.UploadData(hostname, d)


Ik heb getest door naar een niet bestaande pagina te proberen te posten, en in plaats van een 404, krijg ik dan nog steeds de 401 terug.

Iemand een suggestie? Ik wordt hier zelf knettergek van...

Edit:
Zie nu pas dat de stack trace anders is bij een foutief wachtwoord:

Foutief wachtwoord
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Win32Exception (0x80004005): The logon attempt failed]
   System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatus& statusCode) +1404866
   System.Net.NTAuthentication.GetOutgoingBlob(String incomingBlob) +78
   System.Net.NegotiateClient.DoAuthenticate(String challenge, WebRequest webRequest, ICredentials credentials, Boolean preAuthenticate) +560
   System.Net.NegotiateClient.Authenticate(String challenge, WebRequest webRequest, ICredentials credentials) +14
   System.Net.AuthenticationManager.Authenticate(String challenge, WebRequest request, ICredentials credentials) +247
   System.Net.AuthenticationState.AttemptAuthenticate(HttpWebRequest httpWebRequest, ICredentials authInfo) +243
   System.Net.HttpWebRequest.CheckResubmitForAuth() +232
   System.Net.HttpWebRequest.CheckResubmit(Exception& e) +5300691

[WebException: The remote server returned an error: (401) Unauthorized.]
   System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request) +302
   System.Net.WebClient.UploadData(Uri address, String method, Byte[] data) +158
   System.Net.WebClient.UploadData(String address, Byte[] data) +34
   _Default.Page_Load(Object sender, EventArgs e) in C:\Inetpub\sites\MiddleWare\Default.aspx.vb:47
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627


Bij correct wachtwoord, krijg ik alleen de WebException, dus ik gok dat IIS lokaal ook het wachtwoord al probeert ofzo? 8)7 Nog knetterdergek nu

[ Voor 36% gewijzigd door jp op 18-11-2009 17:02 ]


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Mijn gok is dat je rechten op AD niveau toch niet helemaal juist zitten: Dat hij je als gebruiker wel herkent, maar toch geen toegang geeft tot de locatie die je probeert te benaderen.

ik moet beter lezen. Hij lijkt inderdaad je lokale credentials te gerbuiken als login.

[ Voor 38% gewijzigd door boe2 op 18-11-2009 17:17 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Schop?

Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Heb je al geprobeerd om "PreAuthenticate" op True te zetten op het WebRequest object?

C#:
1
2
3
4
5
6
protected override WebRequest GetWebRequest (Uri address)
{
    WebRequest request = (WebRequest) base.GetWebRequest (address);
    request.PreAuthenticate = true;
    return request;
}

[ Voor 55% gewijzigd door Face_-_LeSS op 23-11-2009 16:56 ]


Acties:
  • 0 Henk 'm!

  • jp
  • Registratie: November 2000
  • Laatst online: 03-07 15:30
Ben er weer wat verder mee gegaan. IIS stond niet helemaal goed ingesteld...