406 Неприемлемая ошибка при использовании библиотеки JanRain OpenID с Google

Я использую последний пример библиотеки openid Janrain, и процесс обнаружения, похоже, хорошо работает с Yahoo, myopenid.com и другими ...

Но я застрял с конечной точкой Google (https точка с запятой //www.google.com/accounts/o8/id). Consumer.php просто возвращает ошибку 406 apache, прежде чем я буду перенаправлен на страницу Google.

Вся моя установка доступна здесь: http://www.coplango.com/vendor/openid/examples/

  • Нажмите на потребителя, чтобы попробовать пример с потребителем, но Discovery.php не работает точно так же, доказывая, что это происходит во время обнаружения ...
  • Вы также можете проверить detect.php, чтобы проверить мою установку - тест HTTP-выборки не выполняется с 503, потому что он пытается достичь адреса, который возвращает 503. Остальное в порядке.

Я предполагал, что это связано с тем, что php-yadis указывает заголовок Accept: application/xrds+xml, но я проверил код, и другие типы также принимаются, такие как text/html и application/xhtml+xml.

Кто-нибудь сталкивался с этим?

Есть подсказка?

Большое тебе спасибо!


person ccazette    schedule 30.09.2009    source источник


Ответы (3)


Ok,

Я продолжил расследование, и, похоже, это связано с моим провайдером, который возвращает ошибку 406, если какая-либо строка, содержащая слово смерти "/ id", передается в качестве параметра GET. Мне потребовалось несколько дней, чтобы понять, что дело не в openid !!

Для информации я использую PlanetHoster, если кто-нибудь еще когда-нибудь столкнется с этим. Я отправил им запрос на билеты и жду их ответа.

person ccazette    schedule 01.10.2009
comment
Похоже, это было отключено в целях безопасности. Смотрите эту ветку, если у вас когда-либо возникала такая же проблема: stackoverflow.com/questions/1504744/ - person ccazette; 02.10.2009
comment
Я тоже получил эту ошибку, используя timthumb :( Мой провайдер тоже planethoster .. Я пришлю им билет .. - person numediaweb; 04.01.2012
comment
проблема в том, что они не принимают http: как переменную в URL-адресе. - person numediaweb; 04.01.2012

запустив пример потребителя на моем компьютере, я получаю следующую ошибку:

Got no response code when fetching https://www.google.com/accounts/o8/id
CURL error (60): SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

это означает, что curl не может проверить сертификат https-сервера Google. вы можете обойти это, предоставив curl сертификаты CA для проверки сертификата Google через CURLOPT_CAINFO / _ 3_ или, что проще, прекратить проверку сертификата через _ 4_. следующее изменение в Auth/Yadis/ParanoidHTTPFetcher.php выполняет последнее для меня:

--- ParanoidHTTPFetcher.php.orig        2009-04-22 02:31:20.000000000 +0800
+++ ParanoidHTTPFetcher.php     2009-09-30 22:35:24.093750000 +0800
@@ -127,6 +127,9 @@
                         Auth_OpenID_USER_AGENT.' '.$curl_user_agent);
             curl_setopt($c, CURLOPT_TIMEOUT, $off);
             curl_setopt($c, CURLOPT_URL, $url);
+
+            // don't verify server cert
+            curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);

             curl_exec($c);

конечно, ваша установка curl также должна поддерживать ssl - проверьте свой phpinfo(). также, если CURLOPT_SSL_VERIFYPEER отключен, CURLOPT_SSL_VERIFYHOST может также быть TRUE или FALSE.

см. также http://www.openrest.eu/docs/openid-not-completely-enabled-for-google.php (через Связанные Почему провайдер Google OpenID не работает с PHP-OpenId на моем сервере?) .

person ax.    schedule 30.09.2009
comment
Большое спасибо за ответ и ссылки! Я все еще удивлен, что получаю ошибку 406, а не пустую страницу, как указано в ссылке. 406 довольно специфичен: он должен быть связан с заголовками ответов ... В любом случае, я попробую это как можно скорее и дам вам знать! - person ccazette; 30.09.2009
comment
Хм ... К сожалению, это не решает проблему ... Я посмотрю, смогу ли я дать больше информации. Большое спасибо за ответ, который, возможно, устранил другую проблему! А пока, если кто-то знает, что здесь может происходить, пожалуйста, напишите нам! - person ccazette; 01.10.2009
comment
хотя установка CURLOPT_SSL_VERIFYHOST - это быстрое и простое решение, оно может помешать curl обнаружить атаку «человек посередине». - person jayarjo; 11.07.2010

РЕШЕНИЕ:

В файле .htaccess положить

SecFilterEngine Off
person numediaweb    schedule 04.01.2012