2009-07-30 4 views
37

Есть ли рекомендуемые ресурсы для реализации пользовательского поставщика членства, который использует oAuth? Целью было бы заставить пользователей войти в мое приложение ASP.NET MVC, используя их существующие учетные данные oAuth. После аутентификации пользователя я хотел бы использовать встроенные функции авторизации ASP.NET.oAuth ASP.NET Memberhip Provider

Спасибо.

ответ

45

Я не уверен, что вы ищете, это OAuth.

OAuth предназначен для делегирования полномочий посредством использования токенов. В зависимости от того, что вы делаете, у вас есть два сценария:

  1. Ваше приложение хочет использовать некоторые данные пользователей, размещенные провайдером (скажем, Twitter или Google). В этом случае ваша заявка будет потребителем - короче говоря, пользователю необходимо будет войти в систему и согласиться разрешить вашему приложению иметь доступ к своим данным на провайдере, и вам будет предоставлен токен доступа, который можно использовать для доступа к этим охраняемым ресурсам.
  2. Кроме того, у вас есть приложение с пользователями, у которых есть вход в систему и т. Д. И вы хотите предоставить (то есть вы являетесь провайдером) доступ к некоторой ограниченной информации ваших пользователей сторонним приложениям (потребителям), не подвергая учетных данных пользователей для этих служб.

Для получения дополнительной информации об OAuth - просмотрите OAuth.Net website. В настоящее время существует 3 реализации OAuth для .Net.

Из-за способа OAuth работ, я не могу себе представить, как вы могли бы иметь поставщика членства "OAuth" - это на самом деле предназначены для обеспечения API, и часто цель состоит в том, чтобы делегировать авторизацию на более узком уровне, т.е. предоставить доступ потребительскому приложению только к данным адресной книги пользователей, не позволяя им получать доступ к архивам электронной почты, их календарю и т. Д. - что не подходит ell с моделью безопасности на основе принадлежности/роли.

Я предполагаю, что вы действительно ищете, это OpenId, то есть вы сами аутентифицируете себя с помощью Stackoverflow. Я бы предложил прочитать Stackoverflow OpenId case study here и, вероятно, лучшую реализацию OpenId для .Net в настоящее время является частью проекта DotNetOpenAuth (это было официально названо DotNetOpenId, сайт кода google для проекта is here).

+0

Просто сбросив в комментариях, что DotNetOpenAuth теперь можно найти здесь: http://www.dotnetopenauth.net/ –

+4

@bittercoder я думаю, что вы положили человек с этим ответом , Хотя это правда, в основном люди используют oAuth для авторизации сторонних API-интерфейсов, нецелесообразно рассматривать решение asp.net для пользовательского членства SSO, например. Домен Google Apps, в котором токен авторизации используется в качестве маркера аутентификации asp.net (cookie), чтобы он мог использоваться для последующих обратных вызовов в API Google. У меня есть именно такой сценарий, когда мое приложение MVC вызывает apis в моем приложении google apps.domain. oAuth - это как аутентификация, так и авторизация. –

+0

Этот ответ был создан до OAuth 2, существующего в его текущей форме (3+ лет назад!) - я бы сказал, что в тот момент это было правильно. В наши дни я думаю, что мир перевернулся, и большинство людей не знают OpenID, считают OAuth как механизм аутентификации и не обязательно даже знают о многих основных идеях OAuth (делегированная аутентификация/способ обеспечения доступа к API). – Bittercoder

6

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

2

вы должны смотреть https://github.com/rustd/ASPNETTemplates, который имеет шаблоны проекта по умолчанию для ASP.NET, которые демонстрируют лесосечных при помощи OAuth, а затем простирающиеся универсальных поставщиков (WebForms шаблон, но вы можете сделать то же самое для MVC), чтобы сделать роли и т.д.

1

Библиотеки прошли долгий путь с тех пор, как вы разместили этот вопрос ...Я начал использовать эту библиотеку для Oauth - это уже реализовано Facebook, Twitter, PayPal и Google + интеграция:

OAuth2 Social Logins - Facebook, Google, Twitter, PayPal - ASP.NET MVC C# open source library

Кроме того, если обратная совместимость не выдавать для вас, Microsoft приступила к поддержке популярных поставщиков OAuth ... эта статья:

Microsoft OAuth2 OWIN/Katana integration with Facebook and Google+