Autenticação na API da Web .NET usando o MVC FormsAuthentication

Temos um aplicativo de página única usando a estrutura AngularJS que precisa falar com uma API implementada na API da Web .NET em um domínio diferente.

O problema

A API é implementada no .NET Web API. Para autenticar um usuário para acesso à nossa API, implementamos o modelo MVC Single Page Application. Isso usa FormsAuthentication para conceder acesso à API.

Usamos o Fiddler para depurar. Quando visitamos um controlador na API que exigia autenticação diretamente no navegador, pudemos confirmar que o usuário foi de fato autenticado. Quando fizemos um XMLHttpRequest, como suspeitamos, nenhum cookie de autenticação foi enviado nos cabeçalhos.

O que gostaríamos de fazer é usar o FormsAuthentication para acessar a API da Web .NET através de XMLHttpRequests.

Uma solução proposta para isso era compartilhar sessões entre o .NET Web API e o MVC. Como podemos facilmente manter o estado entre a API da Web .NET e a parte MVC do projeto?

Não é muito RESTful, sabemos, mas precisamos de uma solução rápida para esse problema.

PS! O FormsAuthentication funciona com os controladores de API da Web do .NET usando o atributo [Authorize]. É só que os controladores não podem ser acessados ​​com XMLHttpRequests.

Captura de tela do violinista ao usar XMLHttpRequest

Captura de tela do violinista quando a solicitação é feita diretamente no navegador

Captura de tela de um controlador de autenticação para testar

questionAnswers(1)

yourAnswerToTheQuestion