У меня есть следующие услуги домена:Должен ли я делать авторизацию в своих доменных службах?
pulic void DeleteCustomer(int customerId, string userIdentity, string userPassword)
{
//1º Do login operation to verify if the credentials are valid.
customerRepository.DeleteById(customerId);
}
Давайте предположим, что я потребляя этот код ASP.NET MVC или Windows Forms приложение, которое имеет окно входа в систему.
Логин будет снова проверен в каждой операции, тратя ресурсы.
Скажем, я изменить его на:
pulic void DeleteCustomer (int customerId, int requestUserId)
{
//1º Trust that requestUserId is valid.
//Do something with the requestUserId (e.g Set the UserId that deleted the customer)
customerRepository.DeleteById(customerId);
}
В этом случае операция Логин будет сделано в ASP.NET MVC ИЛИ Windows Forms приложений только один раз, но любой абонент может пройти любой requestUserId, оставляя страшная дыра в безопасности.
Hi @Khanh TO. Я согласен с вами в отношении перспектив перспективного программирования. В моем случае каждая авторизация будет запрашивать базу данных, то есть если вы используете службу из ASP.NET MVC, пользователь выполнит вход в систему (первая авторизация). Когда пользователь вызывает действие, это будет другой авторизацией. Если это действие вызывает пять методов в службе, будет более пяти ударов по базе данных для выполнения той же авторизации, будет выполнено 6 запросов без необходимости. –
@Vinicius Gonçalves: с указанием asp.net mvc вы указали, что информация о зарегистрированном пользователе должна содержать внутри зашифрованного билета. Когда сервер получает этот билет от клиента, сервер может расшифровать, чтобы получить информацию, не обращаясь к БД. –
@Vinicius Gonçalves: В случае авторизации, я думаю, нам обычно нужно защищать «точки входа» бэкэнд-сервиса. Если точки входа - это методы действия asp.net mvc, возможно, нам придется это учитывать. Но если вы развертываете службы домена в качестве другого уровня, они станут точками входа и нуждаются в защите. –