tags:

views:

16

answers:

0

I'm adding php-openid into the PHP CMS Contao, the request fires off to the OpenID provider OK but trouble occur when processing the result.

Within the function Consumer::_processCheckAuthResponse($response,$server_url), the check:

$is_valid = $response->getArg(Auth_OpenID_OPENID_NS, 'is_valid',
                                  'false');

This data isn't present in the response from my OpenID provider, thus the entire request fails.

The following response is set for $response at runtime:

object(Auth_OpenID_Message)#44 (4) {
  ["allowed_openid_namespaces"]=>
    array(3) {
      [0]=>
        string(28) "http://openid.net/signon/1.0"
      [1]=>
        string(28) "http://openid.net/signon/1.1"
      [2]=>
        string(32) "http://specs.openid.net/auth/2.0"
    }
    ["args"]=>
      object(Auth_OpenID_Mapping)#43 (2) {
        ["keys"]=>
          array(1) {
     [0]=>
  array(2) {
    [0]=>
    string(32) "http://specs.openid.net/auth/2.0"
    [1]=>
    string(8) "is_valid"
  }
}
["values"]=>
array(1) {
  [0]=>
  string(5) "false"
}
}
["namespaces"]=>
  object(Auth_OpenID_NamespaceMap)#41 (3) {
["alias_to_namespace"]=>
object(Auth_OpenID_Mapping)#45 (2) {
  ["keys"]=>
  array(1) {
    [0]=>
    string(14) "Null namespace"
  }
  ["values"]=>
  array(1) {
    [0]=>
      string(32) "http://specs.openid.net/auth/2.0"
  }
}
["namespace_to_alias"]=>
object(Auth_OpenID_Mapping)#46 (2) {
  ["keys"]=>
  array(1) {
    [0]=>
    string(32) "http://specs.openid.net/auth/2.0"
  }
  ["values"]=>
  array(1) {
    [0]=>
    string(14) "Null namespace"
  }
  }
  ["implicit_namespaces"]=>
    array(0) {
  }
}
["_openid_ns_uri"]=>
  string(32) "http://specs.openid.net/auth/2.0"
}

If I insert a return true at the top of the function then OpenID will return a success value with correct credentials.

Any ideas?