asp.net MVC 4 Внешний поставщик входа в систему - «Конечная точка OpenID не найдена» (google)

Я изучаю MVC 4 (Visual Studio Express 2012) и пытаюсь использовать новые шаблоны, запеченные в поддержке внешнего входа в систему openId/OAuth. Я следил за это руководство

Все, что я сделал до сих пор, — это создал новое интернет-приложение MVC 4 с проверкой подлинности с помощью форм и раскомментировал строку OAuthWebSecurity.RegisterGoogleClient(); в файле AuthConfig.cs.

Изменение одной строки кода из стандартного шаблона кажется довольно простым, но когда я запускаю проект, я получаю исключение «Конечная точка OpenID не найдена», когда нажимаю кнопку Google.

Имейте в виду, что у меня раньше не было опыта попыток сделать что-либо с OAuth/OpenID.

Возможно, это как-то связано с тем, что я запускаю его с локального хоста на моей машине разработки? Или какая-то другая переменная среды, такая как наш корпоративный прокси-сервер/брандмауэр?

У меня сложилось впечатление от это руководство, чтобы вы могли проверить это с локального хоста (по крайней мере, для Google).

Или есть другая причина этой ошибки?

Прежде чем ответить, имейте в виду, что я не хочу писать собственный код, чтобы это работало. Я хочу использовать стандартный шаблон.


ОБНОВИТЬ

Я попробовал это дома, и на локальном хосте это работает без проблем. Должно быть, это как-то связано с сетевой средой на моем рабочем месте. Либо брандмауэр, либо прокси. Я все еще хотел бы, чтобы это работало на работе, хотя, если у кого-то есть какие-либо предложения...


person BadFeelingAboutThis    schedule 10.09.2012    source источник
comment
в общем случае конечная точка не найдена означает, что была предпринята попытка вызвать веб-службу или API, но в файле web.config отсутствует привязка конечной точки для этой службы.   -  person Forty-Two    schedule 15.09.2012
comment
Вы выполняете развертывание в Windows Azure? Если это так, это может быть вашим решением: stackoverflow.com/questions/10969426/   -  person KWondra    schedule 28.01.2014


Ответы (3)


Насколько я вижу, вы правильно следуете руководству, но использование Google кажется немного схематичным. Это более подробно: http://blogs.msdn.com/b/webdev/archive/2012/09/12/integrate-openauth-openid-with-your-existing-asp-net-application-using-universal-providers.aspx и может предоставить лучшее пошаговое руководство.

В частности, обратите внимание на пакеты NuGet в начале руководства. В дополнение к получению необходимых для работы сборок .dll пакеты NuGet часто вносят изменения в файл Web.Config, где я ожидаю найти информацию о конечной точке для вашего поставщика Oauth. Если вы не установили все эти пакеты, возможно, вам не хватает некоторых параметров конфигурации.

У меня нет конкретных шаблонов проектов, о которых вы говорите, поэтому я не могу проверить: можете ли вы опубликовать свой web.config? Там может быть что-то, что нужно настроить.

Да, и еще есть руководство по написанию собственного провайдера Google, которое кажется довольно простым: http://blogs.msdn.com/b/webdev/archive/2012/08/23/plugging-custom-oauth-openid-providers.aspx

person Jude Fisher    schedule 17.09.2012
comment
Спасибо за информацию. Шаблон встроен в VS2012 Express для Интернета. Серьезно, все, что я делаю после установки VS2012 Express для Интернета, — это создание нового проекта MVC4 C# — интернет-приложения — затем раскомментирование этой строки! - person BadFeelingAboutThis; 18.09.2012
comment
Я читал эту первую статью раньше. Хотя я не очень заинтересован в написании пользовательского кода. Я просто хочу знать, как заставить работать стандартный шаблон, я думаю, это проблема типа среды, может быть, наш корпоративный прокси-сервер или тот факт, что я запускаю его как локальный хост. - person BadFeelingAboutThis; 18.09.2012
comment
Справедливо. Как программист .net, я инстинктивно искал в web.config проблему с отсутствующей конечной точкой. Конечные точки — это просто конфигурация адресации для служб .net (а открытая аутентификация — это просто еще одна служба). Хотя вы можете настроить их в коде, способ MS обычно заключается в том, чтобы сделать это в файле .config. Но не имея шаблонов, которые у вас есть для тестирования, я не могу это подтвердить. Удачи - надеюсь, вы найдете решение. - person Jude Fisher; 18.09.2012
comment
@LDMediaServices: шаблоны OAuth/Openid не имеют конфигураций конечной точки в .config, потому что (я так предполагаю) они выполняются программно внутри сборок, как в DotNetOpenAuth.* В Microsoft.Web.WebPages.OAuth. Я подозреваю, что это проблема с прокси-сервером (похоже, это не брандмауэр), и я не знаю, есть ли для этого простой обходной путь. - person Luciano; 12.11.2013

У меня были похожие проблемы с провайдерами OAuth на локальном хосте, не уверен, что это действительно причина вашей проблемы, но если я делаю какие-либо вещи OAuth, я всегда убеждаюсь, что работаю на порту 80 и добавляю строку для:

127.0.0.1     www.local.com 

на C:\Windows\System32\drivers\etc (вам нужно открыть в блокноте от имени администратора), затем вместо http://localhost:1234 просто перейдите на http://www.local.com и попробуйте. Это может не решить проблему, но исключает еще одну вещь, надеюсь, что это поможет

person Ben    schedule 20.09.2012
comment
Спасибо за совет. К сожалению, это не помогло, но, возможно, другим это пригодится в будущем. - person BadFeelingAboutThis; 21.09.2012

Если у вас есть эта проблема только в вашем офисе, проблема может быть в прокси. Добавление конфигурации автоопределения прокси в файл Web.config вашего проекта должно помочь:

<configuration>
  ...
  <system.net>
   <defaultProxy useDefaultCredentials="True">
    <proxy autoDetect="True" usesystemdefault="True" />
   </defaultProxy>
  </system.net>
</configuration>
person Michał Orlik    schedule 03.03.2015