Аутентифік - все про it і програмуванні
ЗМІСТ
ASP.NET виконує web-додатки під обліковим записом ASPNET. Це означає, що при виконанні завдання, не передбаченої привілеями користувача (наприклад, запис файлу на диск), додаток отримує відмову в доступі.
Ідентифікація користувачів застосовується в тих випадках, коли потрібно надати доступ до розділів web-додатків тільки для певних користувачів. Це може бути Internet -магазини, форуми, закриті розділи в корпоративних Intranet-сайтах і так далі.
Безпека в додатках ASP.NET заснована на трьох операціях:
За замовчуванням застосовується тип аутентифікації Windows. Значення None має сенс встановлювати якщо використовується власна схема аутентифікації або анонімний доступ (для підвищення продуктивності).
АутентіфікаціяWindows
Існує 4 типи аутентифікації Windows. звичайна (basic), коротка (digest), вбудована (integated) і на основі клієнтських сертифікатів SSL. Звичайну і коротку аутентифікацію застосовують для ідентифікації імені користувача і пароля, яка вказана в діалоговому вікні. Вони добре працюють в Internet. так як дані передаються по HTTP. Базова аутентифікація передає пароль і ім'я користувача в кодуванні Base 64, яку легко розкодувати. Для підвищення безпеки можна використовувати базову аутентифікацію спільно з SSL. Базову аутентифікація підтримують більшість браузерів.
Коротка аутентифікація є більш безпечною, так як пароль шифрується за алгоритмом MD 5. Вона підтримується браузерами Internet Explorer 5.0 і вище, або на клієнтській машині повинен бути встановлений. NET Framework. Крім цього, облікові записи користувачів повинні зберігатися в Active Directory.
Вбудована аутентифікація застосовується для ідентифікації облікових записів Windows і не може застосовуватися в Internet. так як клієнт і сервер повинні пройти перевірку контролером домену. При цьому паролі по мережі не передаються, що збільшує безпеку додатки. Цей тип аутентифікації блокується файрвол і працює тільки з Internet Explorer. Вбудована аутентифікації трохи повільніше, ніж базова або коротка.
Застосування сертифікатів SSL так само зазвичай застосовується в Intranet. тому вимагає роздачі цифрових сертифікатів. При цьому типі аутентифікації користувачам не потрібно реєструватися. Сертифікати можна зіставити облікових записів користувачів в домені або Active Directory.
Для вказівки способу аутентифікації потрібно виконати наступні дії:
1. Запустити диспетчер IIS
2. Клацнути правою кнопкою миші по додатком і вибрати в контекстному меню Властивості.
3. У який з'явився діалозі перейти на вкладку Безпека каталогу і натиснути кнопку Змінити в розділі Анонімний доступ і перевірка справжності.
4. У діалозі Методи перевірки справжності вказати тип аутентифікації.
5. Вказати права доступу до папки або окремих файлів в папці Web-додатків. Обов'язково потрібно дозволити доступ для користувача ASPNET.
В даному випадку дозволений доступ для користувача DENIS і заборонений доступ для всіх інших. Замість імені користувача може бути і назва ролі, до якої належать користувачі - адміністратори, менеджери.
Якщо ж ми хочемо захистити тільки один файл (наприклад, для підтвердження замовлення в Internet-магазин), то в Web.config з кореневої папки потрібно додати такі рядки:
Додаток отримує дані користувачів за допомогою властивості Identity класу User. Це властивість повертає об'єкт, що містить ім'я користувача та роль.
bool authenticated = User.Identity.IsAuthenticated;
string name = User.Identity.Name;
bool admin = User.IsInRole ( "Admins");
Forms-аутентифікація
При використанні Forms-аутентифікації запит параметрів реєстрації (наприклад, логіна і пароля) відбувається в web-формі. Реєстраційна сторінка вказується у файлі Web.config. При першому зверненні до захищених сторінок ASP.NET перенаправляє користувача на сторінку для введення пароля. При успішній реєстрації аутентифікаційні дані зберігаються у вигляді cookie і при повторному зверненні до захищених сторінок реєстрація не потрібна.
Для того, щоб використовувати Forms-аутентифікацію в файлі Web.config в кореневій папці додатка потрібно вказати сторінку для введення пароля:
На формі знаходяться поля для введення логіна і пароля і прапорець для зберігається реєстрації. При натисканні кнопки "Увійти" відбувається пошук користувача з таким логіном і паролем. Якщо такий користувач знайдений, викликається функція FormsAuthentication.RedirectFromLoginPage (), в якій вказується ім'я користувача та прапор для зберігається реєстрації. Якщо ж ні - виводиться повідомлення про помилку.
protected void btnLogin_Click (object sender, System.EventArgs e)
<
if (! IsValid) // перевіряємо правильність введених даних
return;
OleDbConnection connection = GetDbConnection ();
OleDbCommand command = new OleDbCommand (string.Format ( "SELECT id FROM Customers WHERE login = '' AND password = ''", login, password), connection);
OleDbDataReader reader = command.ExecuteReader ();
if (! reader.Read ()) // пароль або логін невірні
<
lblError.Text = "Неправильний пароль - спробуйте ще раз";
return;
>
string id = return reader.GetInt32 (0) .ToString ();
FormsAuthentication.RedirectFromLoginPage (id, chkbRememberLogin.Checked);
>
catch (OleDbException ex)
<
lblError.Text = "Помилка бази даних";
>
finally
<
connection.Close ();
>
>
Аутентифікації на основі ролей
Для аутентифікації на основі ролей застосовується атрибут roles тега allow. Наприклад, якщо ми хочемо заборонити доступ всім, крім користувачів з групи Admin. ми повинні вставити такі рядки в файл Web.config.
Потім при кожному запиті потрібно пов'язувати облікові записи користувачів і ролі. Зазвичай це робиться в обробнику події AuthenticateRequest в файлі Global.asax.
protected void Application_AuthenticateRequest (Object sender, EventArgs e)
<
HttpApplication appl = (HttpApplication) sender;
if (appl.Request.IsAuthenticated appl.User.Identity is FormsIdentity)
<
FormsIdentity identity = (FormsIdentity) appl.User.Identity;
DataTable tblUsers = (DataTable) Application [ "UsersTable"];
appl.Context.User = new GenericPrincipal (identity,
new string []);
>
>
У коді перевіряється тип аутентифікації користувача і те, що він вже зареєстрований. Ім'я користувача витягується з cookie властивістю Name. Таблиця з іменами користувачів і їх ролями для підвищення швидкодії була збережена в об'єкті Application. З цієї таблиці і знаходимо роль користувача, яку зберігаємо в об'єкті GenericPrincipal.
параметри аутентифікації
Якщо другий параметр функції RedirectFromLoginPage () дорівнює false. той час життя сеансового cookie. генерується ASP.NET. одно за замовчуванням 30 хвилин. Щоб змінити цю інтервалу служить параметр timeout тега forms в файлі Web.config. Встановимо час дії аутентифікації о 3 годині.
authentication>
Коли сеансовий cookie повертається в наступних після реєстрації запитах, він автоматично оновлюється, якщо час життя минуло більше ніж на половину. Час же життя зберігаються cookie одно 50 років.
Можна вказати ім'я аутентифікаційних cookie. помістивши його в атрибут name (ім'я за замовчуванням - ASPXAUTH):
authentication>
За замовчуванням аутентіфікацонние cookie шифруються і перевіряються. Рівень захисту можна вказати через атрибут protection. значення за замовчуванням якого All. Значення Validation наказує тільки перевірку cookie. а значення Encript - тільки шифрування. Повністю відключити захист можна вказавши значення None. Відключати захист має сенс якщо дані передаються по протоколу HTTPS.
authentication>
Скидання forms-аутентифікації
Скидання реєстрації можна побачити на багатьох сайтах. Для скидання аутентифікації застосовується метод FormsAuthentication.SignOut (). Він встановлює дату закінчення дії cookie на минулий час і cookie автоматично знищується.
аутентифікація Passport
При аутентифікації Passport користувачі можуть входити на різні web-сайти користуючись єдиним посвідченням служби Microsoft Passport. Це звільняє користувача від реєстрації на кожному сайті, а самі сайти отримують відомості про користувача з профілю, що зберігається Microsoft.
Для використання Passport аутентифікації в web-додатків потрібно встановити Passport SDK. Passport SDK надається безкоштовно для тестування, але для комерційного використання на сайті необхідно придбавати ліцензію.
При зверненні до програми з Passport аутентифікації перевіряється наявність cookie з дані Passport. Якщо такого файлу немає, користувач перенаправляється на сторінку для реєстрації Passport.
Для включення даного режиму аутентифікації в файлі Web. config потрібно вказати наступне:
Отримати доступ до інформації про вас можна за допомогою події PassportAuthentication _ OnAuthenticate в файлі Global.asax.
protected void PassportAuthentication_OnAuthenticate (Object sender, PassportAuthenticationEventArgs e)
System.Web.Security.PassportIdentity id = e.Identity;
if (id.IsAuthenticated)
Session [ "PassportID"] = e.Identity.Name;
Session [ "Name"] = e.Identity [ "FirstName"] + e.Identity [ "LastName":];
Session [ "Email"] = e.Identity [ "PrefferedEmail"];
>
>
• Завантажити оригінали - 3.45 КБ • Завантажити тест - 1.08 КБ Пам'ятайте, що веб-служба - всього лише засіб. Є багато інших засобів на кшталт HTTPService, дистанційна зв'язок Flex і т. Д. Довідка У статті Flex HTTPService з ASP.NET на CodeProject показано використання тега flex Якщо веб-додаток, що викликає багато служб і завантажувати багато даних на кожній сторінці з безліччю фонових обчислень з бази даних, гальмує - то треба зробити: 1. Стиснення HTTP Стиснення HTTP стискає вміст сторінки на сервері. Воно стискає запити і відповіді HTTP, що значно підвищує про.Схожі статті