Интранет Безопасность веб-приложений - PullRequest
1 голос
/ 03 марта 2009

Использование Active Directory / Windows Встроенная аутентификация является само собой разумеющимся. С точки зрения разработки, как лучше всего это использовать?

Это через конфигурацию?

<location path="SecurePage.aspx">
    <system.web>
        <authorization>
            <allow roles="MyDomain\My Secure Users" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Это через код ?

User.IsInRole(@"MyDomain\My Secure Users");

Это хорошая идея, чтобы сохранить это в базе данных? Таким образом, предоставление новых пользователей / групп может быть сделано через пользовательское приложение? (Я спрашиваю об этом, потому что это статус-кво.) Что не так с этой идеей?

Ответы [ 3 ]

1 голос
/ 03 марта 2009

Нет причин, по которым вы не можете использовать оба. Делать через web.config действительно просто и эффективно. Всегда работайте на уровне ролей, хотя. Вы используете версию кода для сценариев, в которых у вас есть использование, когда конфигурации недостаточно, а также когда вы хотите отобразить / скрыть определенные части пользовательского интерфейса (есть также варианты управления этим).

Обновление 1: У вас уже есть поддержка ролей, поэтому я предполагаю, что база данных фактически должна отображать роли в функции. Встроенная поддержка Asp.net и поддерживаемые точки расширения находятся на уровне ролей. Если вам действительно нужно быть полностью динамичным, то вам нужно выполнить проверку на уровне кода (.config работает с ролями). Это требует дополнительных усилий, поэтому больше зависит от размера системы. В большинстве случаев достаточно придерживаться ролей.

1 голос
/ 03 марта 2009

Я лично предпочитаю декларативный подход (т. Е. Подход на основе определения местоположения web.config). Это облегчает внесение изменений при необходимости, не требуя повторного развертывания кода.

Ни при каких обстоятельствах я не рекомендую вызывать User.IsInRole () со статической строкой, как вы делаете в своем примере; используйте декларативный подход web.config, если ваша аутентификация не меняется.

Идти по маршруту, который вы предлагаете в своем последнем абзаце, вполне нормально, но я бы порекомендовал его только в ситуациях, когда ваша информация аутентификации может часто меняться, т. Е. Для приложений CMS или аналогичных им подобных.

Короче говоря, я не думаю, что есть "лучшая практика" по этому вопросу; это действительно зависит от приложения.

0 голосов
/ 03 марта 2009

Если он не изменится сильно, используйте web.config.

Если он сильно изменится, используйте метод кода, но с базой данных, чтобы его можно было легко модифицировать.

Более общий ответ на методы кодирования, нежели связанный с безопасностью.

...