Как сообщить аутентификации форм ASP.NET, чтобы она не аутентифицировала определенные расширения файлов? - PullRequest
2 голосов
/ 30 июля 2010

У меня есть сайт asp.net 2.0 (.net3.5) на II6.Это настройка для использования аутентификации форм.Я настроил «aspnet_isapi.dll» как запись в «карте приложения подстановочных знаков» в IIS, чтобы все запросы проходили через asp.net.В web.config я запрещаю всем анонимным пользователям следующие настройки:

<system.web>
    <authorization>
        <deny users="?"/>
    </authorization>
    ...
</system.web>

Я хотел бы сделать так, чтобы файлы с определенными расширениями (в частности, файлы изображений, такие как .gif, .jpg) недолжны быть аутентифицированы.Эти файлы расположены в разных папках, поэтому простое разрешение для папки с изображениями не будет работать.

Я изменил свой собственный HttpModule для проверки подлинности с помощью форм, чтобы игнорировать все такие запросы и просто возвращать их.Но поскольку он игнорирует эти файлы и не создает принципала, запрос остается анонимным и получает ошибку аутентификации.

В идеале было бы здорово, если бы я мог выполнить одно из следующих действий, но это не похоже на этокое-что, что можно сделать:

1) Позволить нам исключить определенные расширения файлов при настройке сопоставления с подстановочными знаками в IIS.

2) В моем собственном HttpModule для проверки подлинности с помощью форм я могу как-то сказать asp.net, чтобы остановить конвейер обработки asp.net для этого файла или просто остановить аутентификацию для него.

3) Позвольте нам использовать подстановочные знаки в атрибуте пути тега location в web.config, например:

<location path="*.jpg>
    <authorization>
        <allow users="?"/>
    </authorization`>
</system.web`>

Единственное решение, которое я могу придумать, - это удалить сопоставление с подстановочными знаками в IIS и добавить сопоставление расширений приложений по отдельности, чтобы не все запросы обрабатывались asp.net.Но затем я рискую пропустить определенные типы файлов, не говоря уже о том, что было бы утомительно добавлять его отдельно для всех известных типов файлов (за исключением файлов изображений)

Есть идеи?

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

создать общий аутентифицированный принципал

Public Class BlowByAuthenticatedIdentity
    Implements IIdentity

    Public ReadOnly Property AuthenticationType() As String Implements System.Security.Principal.IIdentity.AuthenticationType
        Get
            Return "BlowBy"
        End Get
    End Property

    Public ReadOnly Property IsAuthenticated() As Boolean Implements System.Security.Principal.IIdentity.IsAuthenticated
        Get
            Return True
        End Get
    End Property

    Public ReadOnly Property Name() As String Implements System.Security.Principal.IIdentity.Name
        Get
            Return String.Empty
        End Get
    End Property
End Class

в Global.asax Application_AuthenticateRequest

If Request.Path.ToLower.EndsWith(".jpg") Then
   Me.Context.User = BlowByAuthenticatedIdentity
End if
0 голосов
/ 03 августа 2010

Может быть, вы можете попробовать использовать раздел httpHandlers, чтобы назвать расширения для исключения

<system.web>
    <httpHandlers>
        <add verb="*" path="*.mdb" type="System.Web.HttpForbiddenHandler" />
        <add verb="*" path="*.csv" type="System.Web.HttpForbiddenHandler" />
        <add verb="*" path="*.private" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers> 
</system.web>

, а затем создать свой собственный httpHandler для обработки файлов, запрошенных пользователем.

Подробнее вы можете прочитать здесь- http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q307985#2a

это только мои мысли по твоей проблеме.

Спасибо, Арти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...