2009-08-12 11 views
2

Ich muss eine XMLRPC-Anfrage, die authentifiziert werden muss, und haben eine begrenzte Dokumentation auf der Authentifizierungsseite von XMLRPC gefunden. Was ist der beste Weg, dies zu tun? Im Moment benutze ich den folgenden Code, erhalte aber immer noch einen Fehler bei der Authentifizierung. Gibt es eine andere Möglichkeit, den Client anzugeben, und dann eine sekundäre Authentifizierungsmethode aufzurufen?Wie XMLRPC :: Client-Authentifizierung

client = XMLRPC::Client.new(@xmlrpc_url, "/xmlrpc.php", "443", nil, nil, @username, @password, true, 900) 
+0

Irgendwelche Fortschritte dabei? Auf der Suche nach dem gleichen –

Antwort

1

... Ich bin den Code unten verwenden, aber immer noch einen Authentifizierungsfehler

doppelt überprüfen, ob die Remote-Webserver für die Ressource akzeptiert HTTP-Basic-Authentifizierung immer /xmlrpc.php, und dass es weiterhin Ihre @username und @password akzeptiert.

Per der docs, Ihre XMLRPC Beschwörung für einen RPC client.call("bwizzy") wird etwas mit Grund Auth wie folgt erzeugen:

POST /xmlrpc.php HTTP/1.1 
User-Agent: XMLRPC::Client (Ruby 1.9.1) 
Content-Type: text/xml; charset=utf-8 
Content-Length: 88 
Connection: keep-alive 
Authorization: Basic c3RhY2s6b3ZlcmZsb3c= 
Accept: */* 
Host: localhost 

<?xml version="1.0"><methodCall><methodName>bwizzy</methodName></params></methodCall> 

(Bitte nicht über die Reihenfolge dieser Header zu mir beschweren - das, was ich siehe den Draht :))

nun XML-RPC selbst für die Authentifizierung nicht vorgesehen, so dass Sie einige allgemeine Optionen:

  1. Verwenden Sie typische "Webauth" -Techniken
    HTTP-Autorisierungsschemata, wie Sie sie gerade verwenden. Vertrauenswürdige clientseitige Zertifikate Cookie-Authentifizierungstoken Etc.
    Typische Web Auth-Techniken tragen jedoch gemeinsame Risiken. Stoßen Sie um SO herum, um hier mehr Anleitungen zu erhalten.

  2. die RPC-Funktionen erweitern benutzerdefinierte Auth
    Zum Beispiel zur Unterstützung der RPC-Aufruf bwizzy einen Benutzernamen und ein Passwort als Argumente könnten.
    Oder eine Login-RPC-Funktion erzeugt möglicherweise ein zeitlich begrenztes Token, das als Cookie verwendet werden kann.
    Dieser Ansatz ist invasiv - jetzt müssen Ihre RPC-Aufrufe authentifiziert sein - und fehleranfällig - jetzt müssen Sie Auth selbst implementieren.

  3. Extend XML-RPC selbst
    Die XML-RPC-Aufrufe können sie unterzeichnet oder signiert und verschlüsselt werden, zum Beispiel, ala SOAP digital signatures

Verwandte Themen