Нужно делать доменную авторизацию на интранет-сайте силами БД?
Здравствуйте, на интранет-сайте, где планируется использовать доменную авторизацию стоит ли делать аутентификацию силами базы данных? Я не говорю про таблицы, я имею ввиду логины и роли в самой базе и их права на различные БД. Как такая практика вообще распространена? Правильно ли так делать?
Просто приложение должно иметь доступ к файлам, к котором у пользователя прав нет. Следовательно, мне не очень понятно, как заставить приложение подключатся к БД под пользователем, а файлы читать/писать под другой записью (системной)?
Логины и пароли хранить в базе не нужно. По меньшей мере это не безопасно, а по факту просто не за чем. Вы их не проверяете никак и никуда не выводите(ну может логин понадобится). Что должно быть обязательно в таком случае, так это структура ограничения прав в системе. Она зависит от конкретной архитектуры. По большому счету по GUID пользователя вы должны получить набор прав, доступных пользователю. Ну или хотя бы однозначно сказать имеет пользователь с таким GUID право или нет.
Вы меня не так поняли. В SQL есть способ авторизации c помощью доменного логина. Тем самым я могу определенным ролям пользователей выдать права на разные процедуры и таблицы. В таком случае идентификацию будет проводить сам SQL Server. Второй способ: я буду держать в таблице логины пользователей и их роли, запросы с веб-сервера буду выполнять под одной учеткой (например app_user), а аутентификацию буду выполнять на веб-сервере. Например если роль подтвердилась, то возвращаю данные, иначе вызываю исключение.
Shaidulint: Мое мнение - не надо конечного пользователя пускать в базу. Пусть приложение подключается к базе как вам удобно, но пользователи не знают про нее ничего. Что будет если у пользователя нет доступа к хранимке? До исполнения запроса вы не будете знать имеет пользователь доступ к данному функционалу или не имеет. На мой взгляд это поздновато. Плюс к этому логика ошибок отработки запроса перемешивается с логикой безопасности.
Архитектор информационных систем и баз данных. Ful
Если Вы углубляетесь в тему авторизации, то на мой взгляд оптимальное решение LDAP+SASL на данный момент. Конечно можно и в Kerberos углубиться, но мне думаю это совсем не тривиально
На ASP.NET на IIS проблем не увидел. Приложение работает под своей учётной записью. Когда приходит HTTP-запрос и на IIS включена аутентификация NTLM или Kerberos, а также строка подключения к базе данных содержит параметр "Integrated Security = true", то подключение к базе осуществляется от имени пользователя.