2010-09-03 3 views
3

Я потратил бесчисленные часы на чтение документации по всему месту, и у меня все еще возникает проблема с реализацией образцов классического ASP, представленных в последней версии DotNetOpenAuth (3.4.5.10202)).Реализация OpenID (DotNetOpenAuth) с классическим ASP

В частности, я не уверен, какие значения мне нужно изменить в login.asp, чтобы узнать, работает ли он/будет работать для меня. Для кода ниже, если я хочу использовать Google в качестве поставщика OpenID, я могу изменить requestURL на www.google.com/accounts/o8/id или на www.google.com/accounts/o8/ud? (StackOverflow нового лимита пользователей гиперссылки: /)

`realm = "http://" + Request.ServerVariables("HTTP_HOST") + "/classicaspdnoi/" 
thisPageUrl = "http://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("URL") 
requestUrl = "http://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("HTTP_URL")` 

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

Любые советы или направления были бы очень признательны.

BTW, я видел this post, но документации по классическому ASP вне текста в файлах примеров недостаточно.

+0

Это не имеет смысла для меня. Используя образец кода Classic ASP, я ранее вводил свои учетные данные gmail. По прихоти после чтения [этот пост] (http://stackoverflow.com/questions/1588502/no-openid-endpoint-found-net-openid) я решил попробовать что-то глупое, как вставить URL-адрес Google www.google. ком/счета/o8/идентификатор. Что вы знаете ... это направило меня на google, спрашивая, хочу ли я разрешить мой сайт проходить проверку подлинности, а затем перенаправил меня обратно на вызывающую страницу с дюжиной пар имен/значений querystring. Ugggh. Прогресс. Но это не похоже на это. – Brian

ответ

0

Вы на правильном пути. OP Идентификатор Google (который является то, что вы должны ввести, чтобы сделать вход в Google) является https://www.google.com/accounts/o8/id

  • realm является URL к домашней странице
  • thisPageUrl является URL, что провайдер должен перенаправить пользователя обратно после того, как пользователь регистрируется в Провайдере.
  • 'requestUrl' - это полный URL-адрес текущего входящего запроса, включая строку запроса. Он может иметь ответ OpenID.

Таким образом, единственным URL-адресом, который, вероятно, необходимо изменить, является переменная realm.

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

Классический ASP COM-сервер в DotNetOpenAuth v3.4.5 действительно позволяет вам получить адрес электронной почты пользователя Google. Вам нужно немного изменить образец:

-redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "nickname,email", "fullname") 
+redirectUrl = dnoi.CreateRequestWithSimpleRegistration(Request.Form("openid_identifier"), realm, thisPageUrl, "", "email") 

Это должно сделать это. Если нет, возможно, Google требует, чтобы обнаружение RP было успешным. RP Discovery - хорошая вещь, чтобы сделать работу в любом случае. Указания для этого - http://blog.nerdbank.net/2008/06/why-yahoo-says-your-openid-site.html. Обратите внимание, что классический ASP не был аудиторией, которую я имел в виду при написании сообщения, поэтому вам может понадобиться немного адаптировать некоторые методы.

+0

Андрей, спасибо. Я ответил на поток групп Google, но также подумал, что я бы спросил об этом ...Из того, что мне удалось собрать, я не смогу вернуть адрес электронной почты в «clientresponse». Я понимаю, что они (Google) не реализуют особую функцию инфраструктуры openid, но может ли быть предоставлен какой-то альтернативный метод, чтобы я мог узнать адрес электронной почты пользователя, чтобы создать учетную запись для них на моем сайте? – Brian

+0

Я добавил к своему ответу, чтобы включить решение электронной почты Google. –

Смежные вопросы