Webforms do ASP.NET e compartilhamento de autenticação MVC via cookie
Parece haver partes das respostas para o meu problema espalhadas por várias postagens, mas reuni-las não funcionou até agora para mim, então espero que, quando esta postagem for respondida, forme um guia mais completo
O problemaEu tenho um aplicativo de formulários da Web do ASP.NET (W1) e gostaria de iniciar uma atualização para um aplicativo MVC (M1) separado por um período de tempo. A solução que contém W1 foi atualizada para 4.5 e M1 foi criado na solução. W1 usa a estrutura de associação do ASP.Net.
O caso de testeNo M1, adicionei o atributo Autorize à página Sobre no HomeController
[Authorize] public ActionResult About()
Adicionei um link para a página sobre no M1, originada de uma página no W1 que requer que o usuário esteja logado.
A expectativaEspero que um usuário consiga efetuar login no W1, clique no link da página sobre M1 e faça logon automaticamente no M1.
A configuraçãoPasso 1Eu extraí o validationKey e decryptionKey do W1 usando o método descritoaqui. Embora isso pareça uma etapa lógica, não tenho certeza de que seja necessário, pois chaves diferentes ainda permitem que um usuário efetue login no W1.
Passo 2Seguindo as informaçõesaqui eaqui, e após uma depuração considerável, modifiquei seções dos arquivos Web.config para os projetos da seguinte maneira;
Para W1:
<system.web>
<authentication mode="Forms">
<forms name="WRSAUTH"
loginUrl="~/Account/Login.aspx"
defaultUrl="Default.aspx"
protection="All"
timeout="60"
path="/"
domain=".localhost"
requireSSL="false"
slidingExpiration="true"
cookieless="UseCookies"
enableCrossAppRedirects="false" />
</authentication>
<machineKey validationKey="<ValidationKey>"
decryptionKey="<DecryptionKey>"
validation="SHA1"
decryption="AES"/>
<compilation debug="true" targetFramework="4.5">
<httpRuntime maxRequestLength="12288" />
</system.web>
Formulário 1:
<system.web>
<authentication mode="Forms">
<forms name="WRSAUTH"
loginUrl="~/Account/Login"
defaultUrl="~/"
protection="All"
timeout="60"
path="/"
domain=".localhost"
requireSSL="false"
slidingExpiration="true"
cookieless="UseCookies"
enableCrossAppRedirects="false"/>
</authentication>
<machineKey validationKey="<ValidationKey>"
decryptionKey="<DecryptionKey>"
validation="SHA1"
decryption="AES"/>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.webServer>
<modules>
<!--<remove name="FormsAuthentication"/>-->
</modules>
</system.webServer>
Status atualAo clicar no link em W1 que segmenta a página sobre M1, o usuário não está autorizado e é apresentado à tela de login.
Há algo que está faltando na configuração?