Включил модуль OpenID.
Столкнулся со следующей неприятностью - через яндекс авторизация проходит, через mail.ru - нет. Получаю ошибку в журнале: Nonce received from http://openid.mail.ru/login is out of range (time difference: -10799s). Check possible clock skew.
Стал разбираться. В модуле идёт следующая проверка:
function openid_verify_assertion_nonce($service, $response) {
...
...
$time = time();
$expiry = 900;
if ($nonce_timestamp <= $time - $expiry || $nonce_timestamp >= $time + $expiry) {
watchdog('openid', 'Nonce received from @endpoint is out of range (time difference: @intervals). Check possible clock skew.', array('@endpoint' => $service['uri'], '@interval' => $time - $nonce_timestamp), WATCHDOG_WARNING);
return FALSE;
}
Т.е. проверяется, чтобы время ответа было в рамках 900 секунд от текущего времени.
При этом яндекс возвращает, судя по всему, время в GMT, а mail.ru в UTC (текущее наше).
А функция time() возвращает время в GMT (если я не ошибаюсь)
Поискал документацию по OpenID, там сказано, что в openid.response_nonce должно лежать время в UTC (что несколько странно, потому что сервера авторизации могут находиться где угодно и как стыковаться с сервером, делающим запрос - не понятно).
openid.response_nonce