Propagando o contexto de segurança nas chamadas assíncronas


Nas versões anteriores do ASP.NET quando precisamos efetuar um processamento assíncrono através da Interface IHttpAsyncHandler, o método a ser disparado iria correr sob as credenciais do worker process, o que poderia causar problemas de segurança, já que o contexto de segurança da aplicação não era propagado para o processamento assíncrono.

O ASP.NET 2.0 resolve isso com as PageAsyncTasks onde, automaticamente, o contexto é propagado sem que o desenvolvedor precise se preocupar em escrever código para gerenciar isso.

Navegando pelo diretório do .NET Framework 2.0 em %windir%Microsoft.NETFrameworkv2.0 eu vi um arquivo que não conhecia: Aspnet.config. Este arquivo possui um elemento chamado runtime e, dentro dele, dois sub-elementos, a saber: legacyImpersonationPolicy e alwaysFlowImpersonationPolicy.

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<configuration>
    <runtime>
        ……
        <legacyImpersonationPolicy enabled=”true”/>
        <alwaysFlowImpersonationPolicy enabled=”false”/>

    </runtime>
</configuration>

Para que o comportamento seja semelhante as versões anteriores, o elemento legacyImpersonationPolicy é definido como false e, sendo assim, o contexto não será propagado. Caso você não precise manter compartibilidade com aplicações em outras versões, você pode inverter os valores do atributo enabled de ambos elementos e, consequentemente, todo o contexto de segurança será propagado entre as chamadas assíncronas da aplicação, inclusive se utilizando a Interface IHttpAsyncHandler.

Publicidade

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s