Подтвердить что ты не робот

Как реализовать OAuth для приложения?

Я создаю приложение для клиента, которому необходимо выполнить следующее:

  • Разрешить пользователям аутентифицироваться с помощью Google, Facebook, Twitter и LinkedIn.
  • Разрешить пользователям добавлять дополнительных поставщиков после регистрации. (то есть, если пользователь аутентифицирован с помощью Google, тогда они должны иметь возможность добавлять любого или всех других поставщиков.)
  • Разрешить пользователям импортировать контакты Google, список друзей Facebook, подписчиков Twitter и друзей Linkedin, чтобы создать собственный список контактов.

Где лучше всего начать об этом узнавать? Есть ли стандарт, который все используют для этих вещей в .NET? Я несколько раз заходил в Google, и, хотя кажется, что большинство людей указывают на DotNetOpenAuth Я не могу найти твердых учебников о том, как использовать библиотеку. Загрузка поставляется с образцами, но она все еще меня путает.

Я предположил, что это будет так же просто, как:

  • Настройка секретов поставщиков.
  • Начать вход с поставщиком
  • Аутентификация пользователя с помощью файла cookie auth
  • Создайте запись пользователя в моей базе данных и сохраните уникальный идентификатор от поставщика.

Но похоже, что у каждого провайдера есть собственный набор кода, и все это так разные и запутывающие. У Facebook есть некоторый объект графика, у twitter есть некоторый "InMemoryTokenManager", который я не понимаю, и Google даже не имеет примера проверки подлинности, только пример адресной книги Google. Кроме того, по какой-то причине вам нужно скопировать фрагменты кода из какой-либо демонстрации ApplicationBlock в образцы в ваше собственное приложение и получить все, чтобы скомпилировать, не зная, что черт, который он пытается сделать, - трудная задача.

Я чувствую, что мне не хватает чего-то фундаментального со всем этим.

Даже рекомендация книги была бы великолепной на данный момент.

Я считаю, что понимаю концепции высокого уровня OAuth, но как только я пытаюсь погрузиться в ничтожество, я сразу теряюсь.

4b9b3361

Ответ 1

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

Во-вторых, если вам все еще нужно хорошее руководство по некоторым деталям аутентификации oauth2, взгляните на эту замечательную статью от Ben Foster http://ben.onfabrik.com/posts/oauth-providers

В-третьих, к сожалению, если вам нужно что-то другое, кроме аутентификации, нет единого протокола. Таким образом, у каждого провайдера есть свой способ разоблачения этих дополнительных данных - контактов, сообщений и т.д. Вы не можете много сделать, это не имеет никакого отношения к oauth2, но это всего лишь способ вызвать конкретный api, который случайно случается выставлены как веб-службы rest/xml на основе аутентификации oauth2. Это означает, что если вы выполняете только проверку подлинности, то для каждого провайдера протокол в основном одинаковый. Что-то еще особенное.

В-четвертых, я бы придерживался адреса электронной почты, возвращаемого поставщиком, а не внутреннего идентификатора. Не все провайдеры поддерживают идентификатор, тогда как все они могут возвращать электронную почту пользователя. И вы можете доверять этой информации, поскольку провайдеры проверяют электронные письма, прежде чем возвращать их через oauth2.

Ответ 2

Я предлагаю вам использовать World Domination от PureKrome, это тривиально использовать, хорошо документировано и очень приятно!

https://github.com/PureKrome/WorldDomination.Web.Authentication

Он обрабатывает Twitter, Google, Facebook и другие с помощью простых однострочных конфигураций, и он обрабатывает все остальное.

Создатель часто висит вокруг n jabbr.net.

Ответ 3

Шаблон "ASP.NET MVC 4" для веб-приложений ASP.NET имеет DotNetOpenAuth, реализованный на нем, вы должны взглянуть на это, если вы еще этого не сделали.

Ответ 4

Взгляните на проект Social Bootstrap API (он использует служебную программу, но приятно видеть, что все эти технологии модного слова работают вместе читаемый образец).

Кроме того, если вы хотите лучше понять, как работает OAuth, Mashape имеет хорошее объяснение. Это даст вам возможность взглянуть на материал за кулисами, который реализуется большинством оболочек.

У Rick Strahl есть пример, который я использовал несколько лет назад для реализации OpenID в MVC. Это немного устарело, но в то время это была одна из самых прямых реализаций. Несколько клиентских сайтов, которые я создал с этой реализацией, все еще работают нормально.