Вопрос провайдера OpenID: как указать личность, отличную от заявленного идентификатора конечного пользователя - PullRequest
1 голос
/ 31 августа 2010

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

Запрос был для http://example.com/, не могу ответить с личностью http://example.com/openid/33

В этом случае уникальный идентификатор / URL-адрес - http://example.com/openid/33, а указанный для потребителя - http://example.com.

Я использую что-то вроде этого:

$request  =  $server->decodeRequest();
$request->answer( true, null,  $id_url, $request->identity );

Я пытался переключаться между $request->identity и $id_url. Я получаю только ошибку в указанном выше состоянии, и другое состояние работает, но, похоже, не возвращает правильную вещь потребителю. Я использую тест простой регистрации OP, найденный здесь: http://test -id.org / OP / Sreg.aspx , и когда я переключаю их, он работает, но я не могу найти свой $id_url где-нибудь в журналах.

Полагаю, мне нужно было сказать потребителю что-то раньше в процессе об идентификаторе, отличном от идентификатора, указанного конечным пользователем, но до сих пор я не нашел правильного способа попробовать. Я знаю, что это возможно, потому что так работает OpenID в Yahoo.

Любые идеи или предложения приветствуются. Спасибо!

1 Ответ

2 голосов
/ 31 августа 2010

Вы путаете URL-адрес конечной точки с заявленным идентификатором или локальным идентификатором OP.

Рабочий процесс выглядит следующим образом:

  • Пользователь вводит предоставленный пользователем идентификатор
  • Потребитель выполняет обнаружение на нем, и затем он либо имеет:
    • URL / версия конечной точки поставщика.В этом случае заявленный идентификатор / локальный идентификатор операции будет http://specs.openid.net/auth/2.0/identifier_select
    • URL-адрес конечной точки поставщика, версия протокола, заявленный идентификатор (идентификатор, предоставленный пользователем) и локальный идентификатор OP

Таким образом, вы должны предоставлять новый идентификатор, только если вы получили http://specs.openid.net/auth/2.0/identifier_select.

...