2009-07-30 29 views
37

¿Hay algún recurso recomendado para implementar un proveedor de membresía personalizado que use oAuth? El objetivo sería que los usuarios inicien sesión en mi aplicación ASP.NET MVC utilizando sus credenciales de oAuth existentes. Después de que el usuario se haya autenticado, me gustaría aprovechar las funciones de autorización integradas de ASP.NET.oAuth Proveedor de membresía de ASP.NET

Gracias.

Respuesta

45

No estoy seguro de lo que estás buscando es OAuth.

OAuth es para delegar la autorización, mediante el uso de tokens. Dependiendo de lo que esté haciendo, tiene dos escenarios:

  1. Su aplicación desea utilizar algunos de los datos de los usuarios, alojados por un proveedor (digamos twitter o google). En ese caso, su aplicación sería un consumidor; en resumen, el usuario tendría que iniciar sesión y aceptar autorizar que su aplicación tenga acceso a sus datos sobre el proveedor, y se le proporcionaría un token de acceso que se puede usar. para obtener acceso a esos recursos protegidos.
  2. Como alternativa, tiene una aplicación, con usuarios que tienen inicios de sesión, etc. Y desea proporcionar (es decir, usted es el proveedor) acceso a cierta información restringida de sus usuarios a aplicaciones de terceros (consumidores) sin exponer su credenciales de los usuarios a esos servicios.

Para obtener más información sobre OAuth, consulte OAuth.Net website. Actualmente hay 3 implementaciones de OAuth disponibles para .Net.

Debido a la forma en que funciona OAuth, no puedo imaginar cómo se puede tener un proveedor de pertenencia "OAuth" - es realmente destinada a asegurar API, y a menudo el objetivo es delegar la autorización en un nivel más granular, es decir, darle a las aplicaciones de los consumidores acceso a solo los datos de la libreta de direcciones de los usuarios, sin permitirles acceder a los archivos de correo electrónico, a su calendario, etc. ell con un modelo de seguridad basado en membresía/función.

Supongo que lo que realmente está buscando es OpenId, es decir, la forma en que se autentica con Stackoverflow. Sugiero leer el Stackoverflow OpenId case study here y probablemente la mejor implementación de OpenId para .Net es actualmente parte del proyecto DotNetOpenAuth (formalmente se lo llamó DotNetOpenId, el sitio del código de Google para el proyecto is here).

+0

Apenas cayendo en un comentario que DotNetOpenAuth ahora se puede encontrar aquí: http://www.dotnetopenauth.net/ –

+4

@bittercoder creo que echar a la gente con esta respuesta . Si bien es cierto que la mayoría de la gente usa oAuth para la autorización de API de terceros, no es irrazonable considerar una solución de membresía personalizada de SSO asp.net, por ejemplo. El dominio de Google Apps donde se usa el token de autorización como el token de autenticación asp.net (cookie) para que pueda ser utilizado para las posteriores llamadas a la API de Google. Tengo exactamente este escenario donde mi aplicación MVC llama apis en mi google apps.domain. oAuth es Autenticación Y Autorización. –

+0

Esta respuesta se creó antes de que OAuth 2 existiera en su forma actual (hace más de 3 años). Diría que en ese momento era correcto. En estos días, creo que el mundo ha cambiado, y la mayoría de la gente ignora OpenID, considera OAuth como un mecanismo de autenticación y ni siquiera está consciente de muchas de las ideas centrales detrás de OAuth (autenticación delegada/forma de asegurar el acceso a API). – Bittercoder

6

Creo que usted podría estar buscando DotNetOpenAuth. No lo he usado, así que no puedo decir con certeza si incluye un proveedor de membresía, pero espero que sí lo haga. Si no, es de código abierto, por lo que debería ayudarte con lo que intentas hacer de todos modos.

2

usted debe echar un vistazo https://github.com/rustd/ASPNETTemplates que tiene las plantillas de proyecto por defecto para asp.net que demuestran el acceso utilizando OAuth y luego se extienden los proveedores universales (formularios web plantilla, pero se puede hacer lo mismo para MVC) para hacer papeles etc

1

Las bibliotecas han recorrido un largo camino desde que publicaste esta pregunta ...He empezado a utilizar esta biblioteca para Oauth - que ya ha implementado Facebook, Twitter, PayPal y Google + integración:

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

Además, si la compatibilidad hacia atrás no es problema para usted, Microsoft ha comenzado a apoyar a los proveedores de OAuth populares ... ver este artículo:

Microsoft OAuth2 OWIN/Katana integration with Facebook and Google+

Cuestiones relacionadas