Hej,Skicka 'user credentials' i 'request'
Ursäkta svengelskan...
Mitt problem är följande: Jag skulle vilja låta en användare skickas vidare från en webbserver till en annan utan att behöva logga in ytterliggare en gång. Användarens klient är anonym, alltså inte påloggad på domänen. Sajt B nedan använder Windows Integrated Authentication. Se flödet:
1; Användaren loggar in på sajt A på server 1. Användarnamn och lösenord fångas upp och lagras som sessions variabler på servern.
2; Användaren klickar på en länk på sajt A och ska därmed skickas vidare till sajt B på server 2, utan att behöva logga på igen. Användarnamn och lösenord bakas in i requesten till sajt B och användaren godkänns därmed utan att behöva logga på en gång till.
Jag lekte lite med HttpWebResponse objektet och lät detta spola ut resultatet genom Respone.Write, men det fungerar inte så bra och jag är inte tillfreds med sättat att lösa problemet på. Anledningen till att det inte fungerar så bra är att den svarande sidan inte genereras korrekt (av någon anledning verkar sidan använda sig av url:n från sajt A när den egentligen ska peka på objekt som ligger på sajt B), dock funkar påloggningen bra.
Jag är novis inom området så ha tålamod med mig...:) Kan man överhuvudtaget bygga vidare på lösningen nedan? Isådana har ni någon aning om varför det inte fungerar? Om lösningen inte är bra, kan man göra det på något annant sätt?
Provade följande kod:
Dim url As String = "http://xxx/test"
Dim username As String = "x"
Dim password As String = "y"
Dim domain As String = "z"
Dim wr As System.Net.HttpWebRequest = System.Net.WebRequest.Create(url)
Dim myCache As System.Net.CredentialCache = New System.Net.CredentialCache
myCache.Add(New Uri(url), "Basic", New System.Net.NetworkCredential(username, password, domain))
myCache.Add(New Uri(url), "Kerberos", New System.Net.NetworkCredential(username, password, domain))
myCache.Add(New Uri(url), "NTLM", New System.Net.NetworkCredential(username, password, domain))
wr.Method = "GET"
Dim resp As System.Net.HttpWebResponse = Nothing
Try
resp = wr.GetResponse()
Dim ReceiveStream As System.IO.Stream = resp.GetResponseStream()
Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim readStream As New System.IO.StreamReader(ReceiveStream, encode)
Dim read(256) As [Char]
Dim count As Integer = readStream.Read(read, 0, 256)
While count > 0
Dim str As New [String](read, 0, count)
Response.Write(str)
count = readStream.Read(read, 0, 256)
End While
readStream.Close()
Catch we As System.Net.WebException
Response.Write(we.Message)
End Try