2009-08-12 6 views
2

J'ai besoin de faire une requête XMLRPC qui doit être authentifiée, et j'ai trouvé une documentation limitée sur le côté authentification de XMLRPC. Quelle est la meilleure façon d'y parvenir? À l'heure actuelle, j'utilise le code ci-dessous mais j'obtiens toujours un échec d'authentification. Existe-t-il une manière différente de spécifier le client, puis appelle une méthode d'authentification secondaire?Comment authentifier XMLRPC :: Client

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

Des progrès à ce sujet? Vous cherchez à faire la même chose –

Répondre

1

... J'utilise le code ci-dessous, mais en obtenant un échec d'authentification

Double-vérifier que le serveur Web distant accepte HTTP l'authentification de base pour la ressource /xmlrpc.php, et qu'il accepte en outre votre @username et @password.

par le docs, votre incantatoire XMLRPC pour un RPC client.call("bwizzy") va générer quelque chose avec Basic Auth comme ceci:

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> 

(S'il vous plaît ne vous plaignez pas à moi de l'ordre de ces en-têtes - qui est ce que je voir sur le fil :))

maintenant, XML-RPC ne se fournit pas pour l'authentification, vous avez quelques options générales:

  1. Utiliser des techniques typiques d '«autorisation Web»
    HTTP Schémas d'autorisation, comme vous utilisez actuellement. Certificats côté client de confiance. Jetons d'authentification de cookie. Etc.
    Cependant, des techniques d'authentification Web typiques comportent des risques communs. Poke autour de SO pour plus de conseils ici.

  2. étendre les fonctions RPC pour soutenir auth
    défini par l'utilisateur, par exemple, l'appel RPC bwizzy peut prendre un nom d'utilisateur et mot de passe comme arguments.
    Ou une fonction RPC de connexion peut générer un jeton limité dans le temps à utiliser comme cookie.
    Cette approche est invasive - maintenant vos appels RPC doivent être authentiques - et sujettes aux erreurs - vous devez maintenant implémenter vous-même.

  3. Extension lui-même XML-RPC
    Les appels RPC XML peuvent eux-mêmes être signés ou signés et chiffrés, par exemple, ala de SOAP digital signatures

Questions connexes