After the TLS session is established and the the config-auth XML structure of type 'init'
  is sent, the server requests the username and password using forms the client software 
  prompts the user to fill in. The server's reply utilizes a config-auth XML structure of type
  'auth-request'.¶
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE auth SYSTEM "config-auth.dtd">
    <config-auth client="vpn" type="auth-request">
        <auth id="main">
            <message>Please enter your username</message>
            <form action="/auth" method="post">
                <input label="Username:" name="username" type="text" />
            </form>
        </auth>
    </config-auth>
¶
 
  The client can be asked to provide the information in multiple, separate forms as
  the above message implies, and any number of passwords may be requested, e.g., when second factor authentication
  is available, a password and a second factor token may be requested. Alternatively, when the
  number of inputs are fixed the client may be provided a combined form as listed below.¶
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE auth SYSTEM "config-auth.dtd">
    <config-auth client="vpn" type="auth-request">
      <auth id="main">
        <message>Please enter your username</message>
        <form action="/auth" method="post">
            <input label="Username:" name="username" type="text"/>
            <input label="Password:" name="password" type="password"/>
        </form>
      </auth>
    </config-auth>
¶
 
  The client software is expected to respond to the provided form(s) and send
  the responses to the server using an HTTP POST on the form action location as
  specified in the XML message  (in the above examples it was "/auth").
  The reply would then be of type 'auth-reply' as in the following example.¶
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE config-auth SYSTEM "config-auth.dtd">
    <config-auth client="vpn" type="auth-reply">
        <version who="vpn">v5.01</version>
        <auth><username>test</username>
        </auth>
    </config-auth>
¶
 
  As mentioned above, the server may ask repeatedly for information until 
  the user is authenticated. For example, the server could present
  a second form asking for the password after the username is provided, or
  ask for a second password if that is necessary, and may even use forms to
  prompt the user to change a password, provide additional information and so on.
  When multiple forms are provided   the servers responds with an HTTP 200 OK status
  code and sends its new request.¶
  If client authentication fails, the server MUST respond with an HTTP 401
  unauthorized status code. On successful authentication
  the server replies with a 200 HTTP code and use the 'complete' config-auth
  XML structure as follows.¶
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE config-auth SYSTEM "config-auth.dtd">
    <config-auth client="vpn" type="complete">
      <version who="sg">0.1(1)</version>
      <auth id="success">
        <title>SSL VPN Service</title>
      </auth>
    </config-auth>
¶
 
  Note, that including the username and password in XML messages will
  reveal the length of them to a passive eavesdropper. For that is is
  RECOMMENDED for clients to use an 'X-Pad' HTTP header, containing
  arbitrary printable data to make the message length a multiple of 64 bytes.¶