Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проверка подлинности — это процесс установления права пользователя на удостоверение. Существует множество методов, которые можно использовать для проверки подлинности пользователя. Наиболее распространенным способом является использование паролей. При реализации проверки подлинности форм, например, требуется реализация, которая запрашивает пользователей для учетных данных (обычно по некоторым интерфейсам, запрашивающим имя входа и пароль), а затем проверяет пользователей в хранилище данных, например таблицу базы данных или файл конфигурации. Если учетные данные не удается проверить, процесс проверки подлинности завершается сбоем, и пользователь будет предполагать анонимное удостоверение.
Настраиваемая проверка подлинности в службах Reporting Services
В службах Reporting Services операционная система Windows обрабатывает проверку подлинности пользователей через встроенную безопасность или явный прием и проверку учетных данных пользователя. Пользовательская проверка подлинности может быть разработана в Службах Reporting Services для поддержки дополнительных схем проверки подлинности. Это возможно с помощью интерфейса IAuthenticationExtensionрасширения безопасности. Все расширения наследуются от IExtension базового интерфейса для любого расширения, развернутого и используемого сервером отчетов. IExtension, а также IAuthenticationExtensionявляются членами Microsoft.ReportingServices.Interfaces пространства имен.
Основным способом проверки подлинности на сервере отчетов в службах Reporting Services является LogonUser метод. Этот член веб-службы служб Reporting Services можно использовать для передачи учетных данных пользователя серверу отчетов для проверки. Базовое расширение безопасности реализует IAuthenticationExtension.LogonUser , содержащий пользовательский код проверки подлинности. В примере проверки подлинности форм logonUser, который выполняет проверку подлинности по заданным учетным данным и пользовательскому хранилищу пользователей в базе данных. Пример реализации LogonUser выглядит следующим образом:
public bool LogonUser(string userName, string password, string authority)
{
return AuthenticationUtilities.VerifyPassword(userName, password);
}
Следующая пример функции используется для проверки предоставленных учетных данных:
internal static bool VerifyPassword(string suppliedUserName,
string suppliedPassword)
{
bool passwordMatch = false;
// Get the salt and pwd from the database based on the user name.
// See "How To: Use DPAPI (Machine Store) from ASP.NET," "How To:
// Use DPAPI (User Store) from Enterprise Services," and "How To:
// Create a DPAPI Library" for more information about how to use
// DPAPI to securely store connection strings.
SqlConnection conn = new SqlConnection(
"Server=localhost;" +
"Integrated Security=SSPI;" +
"database=UserAccounts");
SqlCommand cmd = new SqlCommand("LookupUser", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sqlParam = cmd.Parameters.Add("@userName",
SqlDbType.VarChar,
255);
sqlParam.Value = suppliedUserName;
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read(); // Advance to the one and only row
// Return output parameters from returned data stream
string dbPasswordHash = reader.GetString(0);
string salt = reader.GetString(1);
reader.Close();
// Now take the salt and the password entered by the user
// and concatenate them together.
string passwordAndSalt = String.Concat(suppliedPassword, salt);
// Now hash them
string hashedPasswordAndSalt =
FormsAuthentication.HashPasswordForStoringInConfigFile(
passwordAndSalt,
"SHA1");
// Now verify them. Returns true if they are equal.
passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);
}
catch (Exception ex)
{
throw new Exception("Exception verifying password. " +
ex.Message);
}
finally
{
conn.Close();
}
return passwordMatch;
}
Поток проверки подлинности
Веб-служба служб Reporting Services предоставляет пользовательские расширения проверки подлинности для проверки подлинности форм с помощью диспетчера отчетов и сервера отчетов.
Метод LogonUser веб-службы Служб Reporting Services используется для отправки учетных данных на сервер отчетов для проверки подлинности. Веб-служба использует заголовки HTTP для передачи запроса проверки подлинности (известного как cookie) с сервера на клиент для проверенных запросов на вход.
На следующем рисунке показан метод проверки подлинности пользователей в веб-службе при развертывании приложения с сервером отчетов, настроенным для использования пользовательского расширения проверки подлинности.
Как показано на рис. 2, процесс проверки подлинности выглядит следующим образом:
Клиентское приложение вызывает метод веб-службы LogonUser для проверки подлинности пользователя.
Веб-служба вызывает LogonUser метод расширения безопасности, в частности, класс, реализующий IAuthenticationExtension.
LogonUser Реализация проверяет имя пользователя и пароль в хранилище пользователей или центре безопасности.
После успешной проверки подлинности веб-служба создает файл cookie и управляет им для сеанса.
Веб-служба возвращает запрос проверки подлинности вызывающему приложению в заголовке HTTP.
Когда веб-служба успешно проходит проверку подлинности пользователя через расширение безопасности, он создает файл cookie, используемый для последующих запросов. Файл cookie может не сохраняться в пользовательском органе безопасности, так как сервер отчетов не владеет центром безопасности. Файл cookie возвращается из LogonUser метода веб-службы и используется в последующих вызовах методов веб-службы и в доступе по URL-адресу.
Замечание
Чтобы избежать компрометации файла cookie во время передачи, файлы cookie проверки подлинности, возвращаемые из LogonUser нее, следует безопасно передавать с помощью шифрования SSL.
Если вы обращаетесь к серверу отчетов через URL-адрес при установке пользовательского расширения безопасности, службы IIS и ASP.NET автоматически управлять передачей билета проверки подлинности. Если вы обращаетесь к серверу отчетов через API SOAP, реализация класса прокси-сервера должна включать дополнительную поддержку для управления запросом проверки подлинности. Дополнительные сведения об использовании API SOAP и управлении билетом проверки подлинности см. в разделе "Использование веб-службы с пользовательской безопасностью".
Проверка подлинности форм
Проверка подлинности форм — это тип проверки подлинности ASP.NET, в которой пользователь, не прошедший проверку подлинности, направляется в HTML-форму. После того как пользователь предоставит учетные данные, система выдает файл cookie, содержащий билет проверки подлинности. При последующих запросах система сначала проверяет файл cookie, чтобы узнать, прошел ли пользователь проверку подлинности на сервере отчетов.
Службы Reporting Services можно расширить для поддержки проверки подлинности форм с помощью интерфейсов расширения безопасности, доступных через API служб Reporting Services. Если вы расширяете службы Reporting Services для использования проверки подлинности форм, используйте протокол SSL для всех сообщений с сервером отчетов, чтобы запретить злоумышленникам получать доступ к файлу cookie другого пользователя. SSL позволяет клиентам и серверу отчетов проходить проверку подлинности друг друга и гарантировать, что другие компьютеры не могут считывать содержимое обмена данными между двумя компьютерами. Все данные, отправленные клиентом через SSL-подключение, шифруются, чтобы злоумышленники не могут перехватывать пароли или данные, отправленные на сервер отчетов.
Проверка подлинности форм обычно реализуется для поддержки учетных записей и проверки подлинности для платформ, отличных от Windows. Графический интерфейс представлен пользователю, который запрашивает доступ к серверу отчетов, и предоставленные учетные данные отправляются в центр безопасности для проверки подлинности.
Для проверки подлинности форм требуется, чтобы пользователь ввел учетные данные. Для автоматических приложений, которые напрямую взаимодействуют с веб-службой Reporting Services, проверка подлинности форм должна сочетаться с пользовательской схемой проверки подлинности.
Проверка подлинности форм подходит для служб Reporting Services, когда:
Необходимо хранить и проверять подлинность пользователей, у которых нет учетных записей Microsoft Windows, и
Необходимо предоставить собственную форму пользовательского интерфейса в качестве страницы входа между разными страницами на веб-сайте.
При написании пользовательского расширения безопасности, поддерживающего проверку подлинности форм, следует учитывать следующее:
При использовании проверки подлинности форм анонимный доступ должен быть включен на виртуальном каталоге сервера отчетов в службах IIS.
ASP.NET аутентификация должна иметь значение Forms. Вы настраиваете проверку подлинности ASP.NET в файле Web.config для сервера отчетов.
Службы Reporting Services могут проходить проверку подлинности и авторизовать пользователей с помощью проверки подлинности Windows или пользовательской проверки подлинности, но не обоих. Службы Reporting Services не поддерживают одновременное использование нескольких расширений безопасности.