Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Sebastianh am 20.08.09 - 11:54:18

Titel: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 20.08.09 - 11:54:18
Hallo,

an meinem Domino7 Testsystem kann ich mich folgenderweise wunderbar authentifizieren:

Code
String httpUrl = memo.getHttpURL(); 
Authenticator.setDefault(new MyAuthenticator(config.getNotesUser(), config.getNotesPassword()));
URL url = new URL(httpUrl);
URLConnection conn = url.openConnection();
InputStream input = conn.getInputStream();
conn.connect();

mit
Code
class MyAuthenticator extends Authenticator {
   	String user = "";
    	String password = "";
    	MyAuthenticator(String u, String pw){
    		user = u;
    		password = pw;
    	}
        public PasswordAuthentication getPasswordAuthentication() {
            return (new PasswordAuthentication(user, password.toCharArray()));
        }
    }

danach kann ich mir aus dem Inputstream die HTML-Seite holen. Klappt wunderbar. Auf einem Domino8 dagegen bekomme ich eine HTML-Seite zurück, die lediglich ein Formular beinhaltet, mit dem ich mich am Server anmelden soll, und dann via Redirect zur Seite des Dokuments im Webmailer weiterleitet. Muss der Server irgendwelche spezifischen Einstellungen haben, damit ich mich programmatisch am HTTP-Task authentifizieren darf, oder was mache ich falsch?
(Benutzer und Passwort sind definitiv richtig (im Webmailer gegengeprüft!))

edit: an meinem Domino8 Testsystem funktioniert es auch, nur am Produktivsystem nicht

Gruß,

Sebastian
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 20.08.09 - 14:58:07
inzwischen habe ich dank eines anderen  Forums (http://www.dominoforum.de) raus, dass es an der Einstellung:

Session Authentication

liegt. Ist diese nicht disabled, kommt es zu dem von mir beschriebenen Verhalten. Also muss ich mich via URL anmelden, was via:

Code
http://ServerName/names.nsf?Login&username=Name&password=PW

funktionieren soll. Tut es aber nicht. Hat das schonmal jemand gemacht, und kann mir einen Tip geben?
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: flaite am 23.08.09 - 00:39:08
Am einfachsten ist es, du benutzt die Klassen von jakarta HttpClient.
Der code dieses openSource Projekts regelt das mit den session cookies, automatisches Folgen von redirections, etc. selbst.
Versuch google: jakarta httpClient. Da findest du Tutorials, Beispiele, etc.
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 24.08.09 - 10:43:58
Ok, Verbindung mit dem Jakartaclient funktioniert, in den LogAusgaben ist auch von einem Cookie die Rede:

Code
>> Cookie: DomAuthSessId=38A2841E63...

Wenn ich allerdings nach der ersten Verbindung ein konkretes Dokument anfrage, bekomme ich eine HTML-Seite zurück, die jede Menge JavaScript beinhaltet, aber Null Content. Lediglich
Code
<!-- Page contents -->
ist vorhanden. Warum?
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 24.08.09 - 12:26:53
mittlerweile übergebe ich das Cookie von der einen an die andere Verbindung, so dass ich nach wie Authentifiziert sein sollte, trotzdem bekomme ich keinen Content vom HTTP-Task zurück:

Code
CookieStore cs =  httpclient.getCookieStore();
List<Cookie> cookies =  cs.getCookies();
		
Cookie sessIDCookie = null;
for(Cookie c : cookies){
	if(c.getName().equals("DomAuthSessId")){
        	sessIDCookie = c;
	}
}
		
DefaultHttpClient httpclient2 = new DefaultHttpClient();
httpclient2.getCookieStore().addCookie(sessIDCookie);

Was mache ich denn nur falsch? Ich will doch nur (endlich) die HTML-Darstellung des Dokuments haben!
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 24.08.09 - 14:49:29
funktioniert!
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: flaite am 24.08.09 - 18:40:11
Normal musst du dich um die Session-Cookies gar nicht zu kuemmern. Gibt dort irgendwelche preemptiveAuthentification, followRedirect flags. Die Details weiss ich aber z.Zt. auch nicht, da ich keinen Zugriff auf meinem Source code hab.
Titel: Re: Authentifizierung am HTTP-Task eines Domino8
Beitrag von: Sebastianh am 26.08.09 - 15:31:49
von wegen funktioniert. Auf dem Testsystem läuft alles wunderbar, aber auf dem Produktivsystem wieder mal nicht. Solange ich Dokumente habe, die den Mime-Type text/text haben, funktioniert alles bestens. Frage ich allerdings ein Dokument vom Mime-Type html/text an, bekomme ich ein Dokument zurück, das einen Link enthält der auf "(Zusätzliche HTML angehängt)" verweist. Versuche ich den dahinterliegenden Link im Browser zu öffnen bekomme ich nur eine 404. Muss ich am Server noch irgendwas einstellen, damit es dem HTTP-Task erlaubt ist, mir mehr als nur text/text zu liefern?