Реализация OpenID (DotNetOpenAuth) с классическим ASP - PullRequest
3 голосов
/ 03 сентября 2010

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

В частности, я не уверен, какие значения мне нужно изменить в файле 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 до федеративного входа), чем мне пришлось потратить.

Любой совет или направление будет принята с благодарностью.

Кстати, я видел этот пост , но документации по реализации Classic ASP не так много, кроме текста в примерах файлов.

1 Ответ

0 голосов
/ 04 сентября 2010

Вы на правильном пути.Идентификатор 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 не был аудиторией, которую я имел в виду при написании поста, поэтому вам, возможно, придется немного адаптировать некоторые приемы.

...