Если я неправильно использую или путаю термины 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 не поддерживает, но до тех пор это было лучшим ответь за меня.