Lado a lado Autenticación básica y de formularios con ASP.NET Web API

Descargo de responsabilidad: permítanme comenzar diciendo que soy nuevo en MVC4 + Web Api + Web Services en general + JQuery. Podría estar atacando esto en el ángulo equivocado.

Estoy intentando crear una aplicación web MVC + API web en C # para .NET 4 para implementarla en Azure. La API web será utilizada por los clientes móviles (iOS, utilizando RestKit).

La aplicación web MVC será relativamente simple. Nos gustaría usar la Autenticación de formularios para ella y SimpleMembership, lo cual logramos y funciona bien.

Usaremos los métodos de la API web de los scripts de JQuery (Knockout) para rellenar partes de las páginas web. Por lo tanto, esperamos que JQuery use la misma identidad autenticada por Autenticación de formularios.

Sin embargo, la idea es que la Web Api puede ser llamada directamente por los clientes móviles. No hay formas de autenticación para esos.

Hemos estado viendo el Modelo de Identidad de Thinktecture (http://nuget.org/packages/Thinktecture.IdentityModel https://github.com/thinktecture/Thinktecture.IdentityModel.40). Agregamos los controladores BasicAuth y AcessKey a la configuración y funciona (consulte el código a continuación).

Cuando intenta acceder a webapi sin estar autenticado, el navegador muestra el cuadro de diálogo de autenticación básica y funciona como se esperaba.

El "problema" es que cuando ya has iniciado sesión a través de la Autenticación de formularios y tratas de llamar a un método Web Api, todavía obtienes el cuadro de diálogo Autenticación básica. En otras palabras, Thinktecture IdentityModel parece ignorar la autenticación de formularios por completo.

Mis preguntas son:

¿Mis expectativas son correctas? que una vez que haya realizado la autenticación de formularios, no debería hacer nada más para permitir que los scripts JQuery, etc., accedan a la API web desde la misma sesión de usuario del navegador.¿Cómo lo arreglo?Si mis expectativas no son correctas; ¿Cómo se supone que esto funcione? es decir: ¿cómo puedo autenticar los scripts de JQuery?

Sé que hay un montón de preguntas similares en Stackoverflow, honestamente busqué un montón, vi videos, etc., pero me falta algo obvio o no hay documentación clara sobre esto para alguien nuevo en las tecnologías.

Aprecio la ayuda. Gracias.

public static AuthenticationConfiguration CreateConfiguration()
{
var config = new AuthenticationConfiguration
        {
            DefaultAuthenticationScheme = "Basic",
            EnableSessionToken = true,
            SetNoRedirectMarker = true
        };            

config.AddBasicAuthentication((userName, password) => userName == password, retainPassword: false);
config.AddAccessKey(token =>
        {
            if (ObfuscatingComparer.IsEqual(token, "accesskey123"))
            {
                return Principal.Create("Custom",
                    new Claim("customerid", "123"),
                    new Claim("email", "[email protected]"));
            }

            return null;
        }, AuthenticationOptions.ForQueryString("key"));

Respuestas a la pregunta(1)

Su respuesta a la pregunta