XML-RPC Protocol Method: getchallenge

From Dreamwidth Notes
Jump to: navigation, search
Needs Update: This documentation was ported over from LJ's Server Manual with minimal modification. It may not match Dreamwidth's implementation of the method, and needs to be double checked against the DW code and updated as necessary.

Generate a one-time, quick expiration challenge to be used in challenge/response authentication methods.

Inputs

None.

Example Request

POST /interface/xmlrpc HTTP/1.0
User-Agent: XMLRPC Client 1.0
Host: www.dreamwidth.org
Content-Type: text/xml
Content-Length: 97
 
<?xml version="1.0"?>
<methodCall>
  <methodName>LJ.XMLRPC.getchallenge</methodName>
  <params>
    <param>
      <value><struct></struct></value>
    </param>
  </params>
</methodCall>

Outputs

auth_scheme Scalar. Required. You can ignore this for now. By default this is the highest version of our authentication schemes, if in the future if we implement other auth schemes or change the default. In that case we'd add a new capabilities exchange: Your client could say, "I know c0 and c1", and our server would then say, "Use c1, it's the best."

challenge Scalar. Required. An opaque cookie to generate a hashed response from.

expire_time Scalar. Required. The expiration time of the challenge, as measured in seconds since the Unix epoch.

server_time Scalar. Required. The server time when the challenge was generated, as measured in seconds since the Unix epoch.

Example Response

HTTP/1.1 200 OK
Connection: close
Content-length: 557
Content-Type: text/xml
Date: Tue, 16 Jul 2002 00:30:01 GMT
Server: Apache/1.3.4 (Unix)
 
<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value><struct>
        <member>
          <name>auth_scheme</name>
          <value><string>c0</string></value>
        </member>
        <member>
          <name>challenge</name>
          <value><string>c0:1073113200:2831:60:2TCbFBYR72f2jhVDuowz:0fba728f5964ea54160a5b18317d92df</string></value>
        </member>
        <member>
          <name>expire_time</name>
          <value><int>1073116091</int></value>
        </member>
        <member>
          <name>server_time</name>
          <value><int>1073116031</int></value>
        </member>
      </struct></value>
    </param>
  </params>
</methodResponse>