2012-10-04 35 views
5

Simplemente no entiendo un código en el espacio de nombres Microsoft.Web.WebPages.OAuth, específicamente la clase OAuthWebSecurity.Atascado utilizando Microsoft.Web.WebPages.OAuth.OAuthWebSecurity en una aplicación MVC

Es este método aquí: -

internal static void RequestAuthenticationCore(HttpContextBase context, 
    string provider, string returnUrl) 
{ 
    IAuthenticationClient client = GetOAuthClient(provider); 
    var securityManager = new OpenAuthSecurityManager(context, 
     client, OAuthDataProvider); 
    securityManager.RequestAuthentication(returnUrl); 
} 

La primera línea está bien => tomar los datos del proveedor, para esta solicitud de autenticación. Vamos a pretender que es un TwitterClient(..).

Ahora, necesitamos crear una clase SecurityManager ... que acepte tres argumentos. ¿Qué es ese 3er arg? ¿Un OAuthDataProvider? Eso se define como una estructura estática, aquí:

internal static IOpenAuthDataProvider OAuthDataProvider = 
    new WebPagesOAuthDataProvider(); 

y esto crea un WebPagesOAuthDataProvider. Este es mi problema. ¿Que es esto? ¿Y por qué tiene que estar estrechamente acoplado a un ExtendedMembershipProvider? ¿Qué es un ExtendedMembershipProvider? ¿Por qué es esto necesario?

En mi aplicación web estoy tratando de usar una base de datos RavenDb y mi propio principal personalizado y una identidad personalizada. Nada que ver con Membresía o SimpleMembership que viene con ASP.NET.

¿Podría alguien ayudarme por favor aquí? ¿Cuál es esa clase y por qué se usa, etc.? ¿Cuál es su propósito? ¿Es esto algo que DNOA requiere? ¿y por qué?

(También espero secretamente que Andrew Arnott vea esta Q y me ayude).

Respuesta

5

No escribí el código que mencionas, así que podría estar equivocado aquí, pero creo que el código ASP.NET al que te refieres está vinculado a su proveedor de membresía.

Si no está utilizando el proveedor de membresía de ASP.NET, le sugiero que simplemente use DotNetOpenAuth directamente (a diferencia de a través de la fachada que Microsoft agregó), que no tiene un acoplamiento tan fuerte.

+0

Pero su código termina llamando al código DNOA, específicamente this => https://github.com/DotNetOpenAuth/DotNetOpenAuth/blob/master/src/DotNetOpenAuth.AspNet/IOpenAuthDataProvider.cs (también estoy en JabbR en su Sala DNOA: P) –

+1

Sí, su código llama a DNOA. Mi punto es que puedes hacer lo mismo, pero sin los lazos con la Membresía si quieres evitar eso. –

1

Si no necesita el sistema de membresía ASP.NET para proporcionar cuentas de inicio de sesión locales (cuentas almacenadas en su base de datos de membresía local) en su sistema, no seguiría la ruta de usar cualquier bits basado en WebMatrix (WebSecurity/OAuthWebSecurity).

realmente hacen que sea más difícil para interactuar con DNOA y más o menos ocultar todas las cosas interesantes al mismo tiempo de todos modos ...

Como necesitaba acounts locales que terminaron tirando todo el código fuente para esto en mi código fuente y luego editarlo desde allí (tenía otras razones para hacer esto también, no solo para enriquecer la interacción con DNOA).

Si necesita cuentas locales, use WebMatrix Si no necesita cuentas locales, use DNOA directamente.

+0

PRO TIP @Jammer: El material de WebMatrix websecurity/oauthwebsecurity etc. es una abstracción sobre DNOA y SimpleMembership. * le suspiro en el bit simplemembership * –

+0

Eso es lo que dije ... no estoy seguro de qué punto estás haciendo ... ?? – Jammer

+2

La respuesta correcta debería ser: https://github.com/PureKrome/WorldDomination.Web.Authentication –

Cuestiones relacionadas