Passwortgeschützte Internetseite ansteuern
-
Ohne zu testen ob diese Funktion richtig ist:
base64(Benutzer:Passwort)
ist eine Funktion die es nicht gibt.
Die musst du dir selbst schreiben oder eine vorhandene Klasse besorgen.
Ich wollte damit nur aufzeigen wie UID:PWD übergeben werden.
-
Vielleicht hilft diese Info weiter:
Die Anmeldung funktioniert mit Outlook Web Access, was wohl auf ASP deutet.
Vielleicht kennt hierfür jemand einen Weg für die Anmeldung.
Vielen Dank,
Euer Entertainer
-
Hallo Leute,
Ich habe mal wieder etwas Zeit gefunden und weiter nach einer Lösung meines Problems gesucht. Ich bin bei MSDN auf eine mögliche Antwort getroffen, die ich angepasst habe. Leider funktioniert es dennoch nicht. Vielleicht könnte sich jemand den Code mal ansehen:
HINTERNET hOpenHandle, hConnectHandle, hResourceHandle; DWORD dwError, dwStatus; DWORD dwStatusSize = sizeof(dwStatus); char strUsername[64], strPassword[64]; strUsername[64] = (char)"Benutzer"; strPassword[64] = (char)"Passwort"; hOpenHandle = InternetOpen("Anmeldung", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); hConnectHandle = InternetConnect(hOpenHandle, "https://Testserver.de/unterordner/", INTERNET_INVALID_PORT_NUMBER, NULL, NULL, INTERNET_SERVICE_HTTP,0,0); hResourceHandle = HttpOpenRequest(hConnectHandle, "GET", "/premium/default.htm", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0); resend: { HttpSendRequest(hResourceHandle, NULL, 0, NULL, 0); HttpQueryInfo(hResourceHandle, HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL); switch (dwStatus) { case HTTP_STATUS_PROXY_AUTH_REQ: // Proxy Authentication Required { // Insert code to set strUsername and strPassword. // cchUserLength is the length of strUsername and cchPasswordLength // is the length of strPassword. DWORD cchUserLength, cchPasswordLength; cchUserLength = sizeof(strUsername); cchPasswordLength = sizeof(strPassword); // Insert code to safely determine cchUserLength and cchPasswordLength. // Insert error handling code as appropriate. InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_USERNAME, strUsername, cchUserLength+1); InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_PASSWORD, strPassword, cchPasswordLength+1); goto resend; break; } case HTTP_STATUS_DENIED: // Server Authentication Required { // Insert code to set strUsername and strPassword. // cchUserLength is the length of strUsername and cchPasswordLength // is the length of strPassword. DWORD cchUserLength, cchPasswordLength; cchUserLength = sizeof(strUsername); cchPasswordLength = sizeof(strPassword); // Insert code to safely determine cchUserLength and cchPasswordLength. // Insert error handling code as appropriate. InternetSetOption(hResourceHandle, INTERNET_OPTION_USERNAME, strUsername, cchUserLength+1); InternetSetOption(hResourceHandle, INTERNET_OPTION_PASSWORD, strPassword, cchPasswordLength+1); goto resend; break; } } }
Die Quelle: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/handling_authentication.asp
Wie bereits gesagt arbeite ich mit dem C++ Builder mit dem ich auch alles kompilieren kann. Es handelt sich um einen Server mit ASP und https, bei dem ich die Anmedlung realisieren möchte.
Vielen Dank für eure Hilfe
-
Kann mir denn wirklich keine meine Fehler nennen oder wenigstens einen Hinweis geben???
Vielen Dank für euer Engagement,
Euer Entertainer
-
Was klappt an der msdn-lösung denn nicht ?
Gib uns mal nen paar Hinweise (http status-codes, fehlermeldung, ...)
-
Ganz einfach:
Nachdem ich die Anmeldung wie beschrieben durchgeführt habe und dann die Seite im Browser aufrufe, dann lande ich erneut bei der Anmeldung und nicht in dem geschützten Bereich.Vielleicht hilft euch das weiter.
Vielen Dank,
Euer Entertainer
-
Hmm, ich komme nur bis:
Run-Time Check Failure #2 - Stack around the variable 'strPassword' was corrupted.Allerdings nutze ich VC++.Net
-
Entertainer schrieb:
Ganz einfach:
Nachdem ich die Anmeldung wie beschrieben durchgeführt habe und dann die Seite im Browser aufrufe, dann lande ich erneut bei der Anmeldung und nicht in dem geschützten Bereich.Du willst deine Anwendung also nur zur Anmeldung benutzen und hinterher unabhängig von deiner Anwendung via Internet Explorer oder sonst einem Browser weitersurfen ?!
-
Hallo geeky,
Genau das ist es.
Gruß Entertainer
-
Das wird dann aber nicht funktionieren :p
Benutzername und Passwort muss nämlich bei JEDEM Request bei Seiten vor denen so ein Passwort-Schutz ist mitgesendet werden.
Die Wininet-Funktionen tun dies nach InternetSetOption(blupp...) automatisch bei jedem Request, aber dein Browser hat nichts mit den wininet-funktionen am Hut und weiss daher weder Benutzername noch Passwort und wird sie daher auch nicht mitsenden
-
Das geht so nicht. Der IE z.B. sendet die Daten pro Fenster. Ein anderes Brwoserfenster auf die selbe URL verlangt wieder eine EIngabe der Daten. Nach schließen sind die Daten weg.
Der Firefox speichert sie irgendwo in einen Sharedbereich der IMHO von einer seiner DLL aufgerufen wird. Dh.: Solange irgendeine Instanz des Firefox läuft braucht man die Daten nicht mehr einzugeben.
Wie es der IIS macht weiß ich nicht. Bei Apache hat dies nichts mit irgendwelchen Webseiten zu tun sondern da wird eine .htaccess in das Verzeichnis gestellt.
Willst du dich jedoch bei einer Webseite einloggen die ein Login vordert (Durch irgendwelche Eingabefelder) dann funktioniert meine Methode sowieso nicht. Dies ist für die AUTH-Anfrage eines Servers gedacht und somit Standard.
Weblogins kann man nur Automatisieren wenn man die GET/POST-Parameter kennt.