Как мне начать использовать OpenID/OAuth с моим сайтом WebMatrix?

Если я неправильно использую или путаю термины OpenID и OAuth, прошу прощения, я все еще новичок во всем этом децентрализованном процессе входа в систему.

Я уже несколько дней пытаюсь заставить свой сайт (построенный в WebMatrix) распознавать логин Google. Проблема в том, что мне нужна эта строка кода (из того, что я исследовал) в моем файле _AppStart.cshtml:

OAuthWebSecurity.RegisterGoogleClient();

Но когда я пытаюсь запустить этот сайт после того, как это утверждение на месте, я просто получаю сообщение об ошибке сервера, указывающее, что OAuthWebSecurity.RegisterGoogleClient(); не существует в текущем контексте.

Я думал, что мне может понадобиться библиотека OAuth, другой помощник или какой-то другой пакет, но единственный подходящий пакет, который я вижу (библиотека Microsoft WebPages OAuth 2.0.20710.0), я не могу получить, потому что WebMatrix не не поддерживает версию NuGet, там написано, что мне нужно (2.0).

Я никогда раньше не использовал этот метод для входа в систему, и я хочу узнать, как я создаю эту функциональность для своих клиентов. Чего я не хочу делать, так это открывать начальный шаблон и копировать мои файлы. У меня проблема с использованием кода, который я не понимаю. Я чувствую, что это было бы ужасной привычкой для меня (мне потребовалось некоторое убеждение, прежде чем я даже стал бы использовать плагины jQuery). Также стоит упомянуть, что я не буду использовать какой-либо другой сторонний сервис для этого входа в систему. Мы используем Gmail для корпоративных учетных записей электронной почты наших сотрудников, поэтому для этого решения мне нужны только учетные записи Google.

Что я пробовал:

  • Поищите в Google другие сценарии, подобные моему. Не удается, потому что не найдены релевантные результаты поиска (т. е. я не могу найти результаты, соответствующие моему сценарию)
  • Поиск более ранних версий пакета Microsoft WebPages OAuth library 2.0.20710.0. Ошибка, потому что мой поиск не возвращает таких пакетов.
  • Использование OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Google); вместо OAuthWebSecurity.RegisterGoogleClient(); Не удается по той же причине, что и при использовании OAuthWebSecurity.RegisterGoogleClient();
  • Посещение администрации сайта и загрузка библиотеки OAuth. Ошибка, потому что NuGet требуется обновление
  • Обновление Nuget не удается из-за упомянутого здесь (очевидно, известной ошибки для WebMatrix): http://forums.asp.net/t/1836913.aspx/1?Error+updating+DotNetOpenAuth+updates+with+NuGet+Gallery
  • Открытие шаблона начального сайта, который уже имеет встроенный и работающий OAuth.Не может объяснить мне, почему этот сайт распознает OAuthWebSecurity.RegisterGoogleClient(), а мой нет, потому что нет четкого способа (насколько мне известно) сообщить, какие пакеты, обновления и/или версии стороннего программного обеспечения могут отличаться.
  • Создание нового начального сайта и копирование всех отсутствующих файлов на основе OAuth из папок *"App_Data"* и "bin". Отказ в том, что никаких поведенческих изменений не наблюдалось.

--------------------------------------------------------ОБНОВЛЕНИЕ- ---------------------------------------

До сих пор лучшим решением этой проблемы, по крайней мере для меня, было просто использование шаблона «Стартовый сайт» в WebMatrix, нравится мне это или нет.

Однако одной из моих самых больших проблем при этом было то, что было так много посторонних файлов, что я не был уверен, что я могу и не могу удалить, чтобы сохранить сайт в чистоте, оставив при этом класс OAuthWebSecurity() полностью доступным и функциональным. Однако я сохранил только папки «bin» и «App_Data» (включая все их содержимое, конечно) из шаблона «Starter Site» и удалил все остальное (включая файл web.config) перед перемещением моих файлов, и это, казалось, работало очень хорошо для меня, до сих пор.

Используя вышеупомянутые шаги, я очистил свой сайт от ненужного кода, но при этом имел доступ к классу OAuthWebSecurity().

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


person VoidKing    schedule 28.03.2013    source источник
comment
Отличный вопрос. Извините, у меня нет идей.   -  person Knox    schedule 28.03.2013


Ответы (3)


Помогает ли этот проект GitHub: WorldDomination.Web.Authentication??

введите здесь описание изображения

есть также MVC и NancyFX пакет nuget, который выполняет некоторые автоматические подключения, если вам это нравится.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я никогда не пробовал это в Webmatrix и никогда не планирую пробовать в этом. Тем не менее, это может все еще работать! :)

person Pure.Krome    schedule 28.03.2013
comment
Спасибо за помощь, но я просто буду честен. Я понятия не имею, что мне с этим делать. Я думаю, что если я введу эту команду в что-нибудь и нажму Enter, вселенная рухнет сама на себя. - person VoidKing; 28.03.2013
comment
Кроме шуток, я действительно не могу представить себе интерфейс WebMatrix, который принимал бы такую ​​команду. Кроме того, я обнаружил, что решения вне среды WebMatrix редко работают в среде WebMatrix. Я необратимо ломал вещи таким образом раньше. - person VoidKing; 28.03.2013
comment
Хотя этот ответ еще не решил мою проблему, я думаю, что должен добавить +1 к этому, потому что на сегодняшний день это может быть самое близкое решение этой проблемы. - person VoidKing; 28.03.2013
comment
Извините @VoidKing - это пакет NuGet. В WebMatrix вы можете найти графический интерфейс NuGet? Если это так, найдите WorldDomination.Web.Authentication и т. д. и посмотрите, можно ли его добавить в ваш проект. (Я никогда не использую графический интерфейс NuGet в Visual Studio, только окно пакета NuGet в Visual Studio). - person Pure.Krome; 29.03.2013
comment
Хорошо, я попробую это и дам вам знать! Спасибо! - person VoidKing; 01.04.2013
comment
Ну, я смог найти (и впоследствии установить) WorldDomination.Web.Authentication, однако вызов метода OAuthWebSecurity.RegisterGoogleClient(); по-прежнему вызывает YSOD по той же причине, что и раньше (OAuthWebSecurity.RegisterGoogleClient(); не существует в текущем контексте), поэтому я могу предположить что это безуспешно. - person VoidKing; 01.04.2013
comment
лол чувак. НЕ вызывайте этот метод :) это не мой код (предоставляется в пакете nuget). Это другой код. мой пакет заменяет этот вызов кода. - person Pure.Krome; 01.04.2013
comment
xD OIC... Вы должны простить меня, я сказал вам, что новичок во всем этом децентрализованном подходе к входу в систему, и я не понимал, что это был код, который вы написали. Что тогда, я должен использовать? Есть ли ссылка, по которой я могу работать с этим пакетом? - person VoidKing; 01.04.2013
comment
/me указывает на ПЕРВУЮ СТРОКУ в моем ответе :) :) также... в примерах используется последний нестабильный пакет nuget. (на момент публикации этого комментария). - person Pure.Krome; 01.04.2013
comment
LOL, еще раз приношу свои извинения, это были длинные выходные :) Я тоже проверяю это сейчас. Однако я не понимаю, что вы имеете в виду, когда говорите the samples are ure using the latest unsable nuget package - person VoidKing; 01.04.2013
comment
Хорошее решение, но я боюсь, что у меня недостаточно технических знаний для реализации этого решения. Я просто не понимаю, как ваш пакет интегрируется в среду WebMatrix. Дайте мне знать, если у вас появятся другие идеи, и еще раз спасибо за вашу помощь! - person VoidKing; 01.04.2013

Вы пробовали следующий пакет?

PM> Install-Package Microsoft.AspNet.WebPages.OAuth
person Kaan Yürükçü    schedule 11.04.2014

Установите пакет Microsoft.AspNet.WebPages.OAuth.

Вы можете установить его с помощью консоли диспетчера пакетов или в диспетчере пакетов с графическим интерфейсом.

person Woric    schedule 15.10.2015