dotnetopenauth с asp.net mvc оказался слишком разочаровывающим для использования - PullRequest
17 голосов
/ 05 апреля 2010

Я очень старался внедрить хорошее решение с открытым идентификатором в asp.net mvc - и везде, куда я обращаюсь, абсолютно мертвых заканчивается. DotNetOpenAuth слишком велик, и я, таким образом, был не в состоянии заставить работать даже самую простую, базовую, абсолютно полную и сухую реализацию.

NerdDinner имел многообещающую реализацию, но невозможно отследить все зависимые файлы и сценарии. К сожалению, на сайте DotNetOpenAuth практически нет информации, которая может помочь.

Кто-нибудь знает о простом подходе к реализации этого, который фактически объясняет и подробно описывает, как он работает с каким-то селектором? О нем так много говорят, но все, что я нахожу для него, так трудно работать, что это действительно отталкивает всю мою команду от того, чтобы даже обдумать это.

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

Это похоже на замечательную библиотеку - но на самом деле это не для меня.

РЕДАКТИРОВАТЬ: Теперь, когда мне указали на то, с чего начать, это стало намного понятнее. Это намного менее неприятно, если вы удалите все лишнее и точно знаете, где находятся основы.

Ответы [ 2 ]

5 голосов
/ 05 апреля 2010

Полагаю, вы, вероятно, начали с новых шаблонов проектов DNOA, которые содержат много кода и довольно сложную схему базы данных, но большинство из них необходимо только для поставщиков OAuth и OpenID, а не для проверяющих сторон. Это может быть немного сложно, когда вы пытаетесь понять, как интегрировать это в существующее решение.

Я бы рекомендовал не начинать с шаблона проекта, но с примером проекта вы можете найти в папке Samples / OpenIdRelyingPartyMvc. Чтобы даже минимизировать это, все, что вам нужно для очень простого сценария (например, просто чтобы иметь возможность отображать URL-адрес OpenID пользователя, который только что вошел в систему), - это метод Authenticate в UserController. Это всего лишь несколько строк.

В моем случае, после очень быстрого начала работы на основе этого примера, я немного углубился в код, сгенерированный шаблоном проекта, изучил и применил некоторые полезные улучшения, но все еще очень легкий и простой, и он прекрасно работает, далеко для меня.

Кстати: я думаю, что DNOA не только идеально спроектирован и хорошо документирован, но и является одной из лучших поддерживаемых библиотек с открытым исходным кодом, которые я когда-либо использовал. Бьюсь об заклад, Андрей оставит комментарий здесь менее чем за 24 часа; -)

3 голосов
/ 05 апреля 2010

Попробуй это. http://www.west -wind.com / Weblog / сообщений / 899303.aspx .

dotnetopenauth включает в себя пример приложения asp.net mvc, которое демонстрирует, как оно работает. Я оценил его до перехода на Spring MVC, но смог разработать функциональный POC на основе логики в примере кода. Если я правильно помню, ваше представление содержит текстовое поле, которое отправляет openid на контроллер, и контроллер использует dotnetopenauth api, чтобы перенаправить вас к поставщику открытого идентификатора для аутентификации. Перенаправление включает в себя URL-адрес вашего сайта через строку запроса, поэтому поставщик открытого идентификатора может перенаправить вас обратно после проверки подлинности. Ваш контроллер будет снова использовать api dotnetopenauth, когда конечный пользователь будет перенаправлен обратно на ваш сайт, и вы сможете извлечь открытый идентификатор. Я знаю, это только объясняет то, что вы, возможно, уже знаете, но, как я уже сказал, у меня не было проблем с тем, чтобы заставить его работать. опубликовать свой код Я закодировал в vm и больше не могу получить доступ, но сейчас загружаю его снова. это звучит как хороший материал для блога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...