Реализация OpenID потребительской информации - PullRequest
4 голосов
/ 24 января 2011

Для интеллектуального режима OpenID в спецификации используется обмен ключами Диффи-Хеллмана.Мне интересно, можно ли повторно использовать открытый и закрытый ключи (при условии, что они не скомпрометированы) или их следует генерировать для каждого запроса.Я использую PHP-библиотеку OpenSSL (мой код: $key = openssl_pkey_new(array('private_key_type' => OPENSSL_KEYTYPE_DH));) для генерации ключей, и она очень медленная (в среднем 22 секунды для генерации ключа - очень неприемлемо для веб-сайта).Если ключи не могут быть повторно использованы, есть ли более быстрый способ генерации ключей с использованием OpenSSL?Я бы предпочел не делать это вручную из-за зависимостей от математических библиотек и т. Д.

РЕДАКТИРОВАТЬ: Для ясности, я ищу две вещи в ответе: Могу ли я повторно использовать ключи Диффи-Хеллмана в ассоциации OpenIDрежим, и если нет, есть ли более быстрый способ генерации ключей с использованием OpenSSL, чем openssl_pkey_new(), так как это занимает исключительно много времени.

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Джефф,

Я хочу начать с поддержки вашего решения построить это решение самостоятельно.Я согласен, что другие решения (по большей части) слабые в нескольких областях.Я еще не полностью перешел на PHP 5.3.5, но буду по пятам.

В любом случае, на ваш вопрос есть несколько ответов:

  1. Да, такПока вы можете гарантировать, что закрытый и открытый ключи не будут скомпрометированы, вы можете использовать их повторно.Однако я всегда немного параноидален по этому поводу, поэтому я использую задание cron для регенерации своих ключей каждую ночь, а затем отслеживаю сеанс, чтобы убедиться, что у меня нет транзакции, которая начинается со старого ключа и заканчивается под новым ...Этот дополнительный шаг (регенерация каждые 24 часа) не является необходимым, но может помочь облегчить ваши заботы.

  2. Нет, генерация новых ключей не должна занимать 22 секунды.Мой сервер тратит 3-5 секунд на их создание (что я до сих пор считаю слишком длинным, поэтому задание cron выполняется на стороне, когда пользователи не находятся в состоянии ожидания или ожидания. Вы можете посмотреть в своих журналах, чтобы увидеть, есть лиЕсть какие-то предупреждения. Может быть проблема с вашим openssl.cnf или некоторой конфигурацией на сервере. Я полагаю, это может занять много времени, если ваш сервер сильно перегружен ресурсами или у вас безумно медленный процессор. Вы можете проверить, что работаетна заднем плане ... может быть, какой-то бесконечный цикл связывает ваш процессор и оперативную память? Вариант перезагрузки?

Удачи!

1 голос
/ 02 февраля 2011

Умный режим OpenID

Что это за умный режим OpenID? Если вы НЕ говорите о потреблении openID, я думаю, вы можете перестать читать (хотя я не думаю, что вам следует создавать еще одного OpenID-провайдера. Их уже достаточно)


. Я никогда не читал спецификации openid (длинное / сложное чтение: $. Я хотел бы прочитать / выучить его когда-нибудь), но когда для аутентификации OpenID требуется 21 секунда (?) Тогда я думаю, что вы делаете что-то не так. Библиотека LightOpenID (очень простая библиотека) (потребитель) выполняет аутентификацию OpenID за доли секунды. Я создал эту библиотеку, которая обертывает LightOpenID + openid селектор . Вы можете увидеть демонстрацию, размещенную на моем хостинге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...