Защищая ELMAH, в то же время делая возможным доступ к нему через RSS-ридер
-
20-08-2019 - |
Вопрос
Мы используем протоколирование исключений ELMAH error в нашем приложении.Я бы хотел защитить ELMAH от обычных пользователей, но при этом сделать его доступным для администраторов / разработчиков приложения.
Когда вы устанавливаете безопасность с помощью аутентификации в формах в web.config, вы теряете возможность доступа к RSS-каналу.Я хотел бы иметь возможность защитить ELMAH, но при этом по-прежнему проходить аутентификацию в axd, чтобы иметь возможность доступа к RSS-каналу (т. е./elmah.axd/rss) из RSS-ридера.
Думая, что http-аутентификация будет правильной, поскольку тогда я, вероятно, смогу перейти к rss-каналу со следующим синтаксисом url http://username:password@somedomain.com/elmah.axd/rss Я предполагаю, что вам нужно будет установить режим аутентификации = "windows" по этому конкретному пути в web.config.Однако возникает один вопрос: как установить учетные данные для виртуального файла?
Просмотр Google возвращает к этому статья о CodeProject о том, как настроить сквозную аутентификацию с помощью файлов cookie.Является ли это хорошим решением моей проблемы?
Есть ли другой способ, который лучше позволяет получить доступ к RSS-каналу, оставаясь при этом в безопасности?
Спасибо.
Решение
Поддержка аутентификации HTTP и проверки подлинности Forms в одном приложении ASP.NET Веб-сайт
По сути, вы добавляете dll с именем MADAM в свой проект, настраиваете свой web.config и настраиваете, какие файлы вы хотите аутентифицировать как Basic вместо Forms:
<configuration>
<configSections>
<sectionGroup name="madam">
<section name="userSecurityAuthority" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="formsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionSectionHandler, Madam" />
</sectionGroup>
</configSections>
...
<madam>
<userSecurityAuthority ... />
<formsAuthenticationDisposition>
<discriminators all="[true|false]">
...
</discriminators>
</formsAuthenticationDisposition>
</madam>
...
<system.web>
<httpModules>
<add name="FormsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionModule, Madam" />
<add name="AuthenticationModule" type="MADAM Authentication Module Type" />
</system.web>
</configuration>
Это было легко настроить и решило мою проблему с возможностью аутентификации elmah.axd и сохранением возможности подписаться на RSS-канал с базовыми учетными данными для аутентификации.
Примечание МАДАМ написано тем же парнем, который написал ELMAH, совпадение?
Другие советы
Зависит от клиента, я думаю - я знаю некоторые настольные ридеры (уверен, что другие тоже так делают) поддерживают каналы, требующие аутентификации, и предоставляют поле входа при первом запросе - правда, не уверен, что они делают за кулисами, чтобы это заработало.