Logging in to one site from another...



Hi,

I need to post log in details from one web site to another to log the user in to one of two sites. The user will enter a username and password in to textboxes on site 'A', and depending on the format of the username they will be logged in to either site B or site C.

I am generating a form post from the code behind, but the login page I am posting to returns a code 200 (OK), but no redirect URI - so the original page just reloads. The form post scripts are working with a third party site, but I can't see the code that handles the response at their end.

Can anyone point me in the right direction as to why this is not working - or if this is the right approach!

Thanks in advance,

Stu


---/ snip /-----
'##### The call

Dim d As New StringDictionary
d.Add("Username", txtUserName.Text.Trim)
d.Add("Password", txtPassword.Text.Trim)
Dim MyCookie As String = ""
Response.Redirect(Utils.FormHelper.GetRedirectURL(Utils.FormHelper.PostData("http://MyDomain.com/login.aspx";, d), MyCookie))

'###### The routines

''' <summary>
'''
''' </summary>
''' <param name="SubmissionUrl"></param>
''' <param name="FormData"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function PostData(ByVal SubmissionUrl As String, ByVal FormData As StringDictionary) As HttpWebResponse

' Build the authentication URI
Dim serverUri As Uri = New Uri(SubmissionUrl)

' Create the request
Dim request As HttpWebRequest = WebRequest.Create(serverUri)

' Set the headers
request.CookieContainer = New CookieContainer()
request.ContentType = "application/x-www-form-urlencoded"
request.Method = "POST"
request.KeepAlive = True
request.AllowAutoRedirect = False

Dim sb As New StringBuilder
Dim iCurrent As Integer = 1
For Each keypair As DictionaryEntry In FormData
sb.Append(keypair.Key & "=" & keypair.Value)
If iCurrent < FormData.Count Then
sb.Append("&")
End If
iCurrent += 1
Next

' Prepare the body of the request with the POST data
Dim body() As Byte = Encoding.UTF8.GetBytes(sb.ToString)

' Set the content length of the request
request.ContentLength = body.Length

' Send the request to the server
Using stream As Stream = request.GetRequestStream()
stream.Write(body, 0, body.Length)
End Using

Return request.GetResponse()
End Function

''' <summary>
''' This method retreives redirected URL from response header and also passes back
''' any cookie (if there is any)
''' </summary>
''' <param name="webresponse"></param>
''' <param name="Cookie"></param>
''' <returns></returns>
Public Shared Function GetRedirectURL(ByVal webresponse As HttpWebResponse, ByRef Cookie As String) As String
Dim uri As String = ""

Dim headers As WebHeaderCollection = webresponse.Headers
Dim code As HttpStatusCode
code = webresponse.StatusCode

If ((webresponse.StatusCode = HttpStatusCode.Found) Or (webresponse.StatusCode = HttpStatusCode.Redirect) Or (webresponse.StatusCode = HttpStatusCode.Moved) Or (webresponse.StatusCode = HttpStatusCode.MovedPermanently)) Then
uri = headers("Location")
uri = uri.Trim()
End If

If (headers("Set-Cookie") IsNot Nothing) Then
Cookie = headers("Set-Cookie")
End If

Dim StartURI As String = "http:/"
If (uri.Length > 0 And uri.StartsWith(StartURI) = False) Then
uri = StartURI + uri
End If

Return uri
End Function

.



Relevant Pages

  • Re: On Error GoTo is not working
    ... Dim strRequestID As String ... Dim strMessage As String ... MsgBox "Required fields for this form are: Request ID, Date, Name, ...
    (microsoft.public.access.formscoding)
  • Re: On Error GoTo is not working
    ... Dim strRequestID As String ... Dim strMessage As String ... MsgBox "Required fields for this form are: Request ID, Date, Name, ...
    (microsoft.public.access.formscoding)
  • How can I do a loop?
    ... Dim strBrief_Description As String ... strMessage = "The following requesthave been moved into production: ... "For futher details regarding this request please go to the database ...
    (microsoft.public.access.formscoding)
  • Re: On Error GoTo is not working
    ... Dim strRequestID As String ... Dim blnRequiredFieldIsMissing As Boolean ... MsgBox "Required fields for this form are: Request ID, Date, ...
    (microsoft.public.access.formscoding)
  • Re: Web DAV only works when authenticated to OWA
    ... > Dim objRequest 'As MSXML.XMLHTTPRequest ... > Dim strXMLNSInfo 'As String ... > ' Specify the URL of the new object to be created. ... > ' Put it all together in an HTTP request. ...
    (microsoft.public.exchange.development)

Loading