Снова OpenID: server_not_allowed
После восстановления работоспособности сайта пришлось заново логиниться на некоторые сайты с использованием OpenID-авторизации. Как и ожидалось, сразу все не заработало.
На livejournal.com и многих других сайтах, где использовался perl-модуль OpenID многозначитально писало: server_not_allowed.
WordPress и некоторые другие сервера которые нашел для тестов ругались более осмысленно: No matching endpoint found after discovering http://klim.in.ua/
В гугле ничего полезного по данным ошибкам не нашел, пришлось ковырять вордпресовский плагин.
Оказалось, что где-то в недрах плагина ошибка все-таки нормально диагностируется, но наружу этот текст не выдается:
OP Endpoint mismatch. Expected http://klim.in.ua/wp/index.php/openid/server, got http://klim.in.ua/wp/openid/server
После недолгих поисков нашел, что этот некорректный дарес выдается через XRDS (http://klim.in.ua/wp/?xrds):
-
-
<!– OpenID Consumer Service –>
-
<Service priority="10">
-
<Type>
-
http://specs.openid.net/auth/2.0/return_to
-
</Type>
-
<URI>
-
http://klim.in.ua/wp/index.php/openid/consumer
-
</URI>
-
</Service>
-
Выдает такой адрес файл openid/common.php:
-
-
if ($wp_rewrite->using_permalinks()) {
-
$url .= ‘index.php/openid/’ . $service;
-
пришлось поправить на:
-
-
if ($wp_rewrite->using_permalinks()) {
-
$url .= ‘openid/’ . $service;
-
-
После чего все нормально заработало.