Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałSławomir Krzyk Został zmieniony 10 lat temu
1
Administracja systemami operacyjnymi Wiosna 2014
Wykład 4 Autoryzacja w aplikacjach WWW dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki
2
Cele autoryzacji na stronach WWW
Ograniczenie dostępu do pewnych stron – tylko dla grupy uprawnionych użytkowników Rejestracja ruchu użytkowników Dostosowanie zawartości strony do preferencji użytkownika
3
Metody uwierzytelnia na stronach WWW
Podstawowa metoda uwierzytelniania w przy użyciu plików .htaccess Rozszerzona metoda uwierzytelniania przy użyciu plików .htaccess Uwierzytelnianie z modułem mod_auth_mysql Uwierzytelnianie podstawowe w PHP Uwierzytelnianie z użyciem PHP, MySQL i mechanizmu sesji Uwierzytelnianie z użyciem SSL IIS – Integrated Windows Authentication Uwierzytelnianie z wykorzystaniem bazy LDAP
4
Uwierzytelnianie przez .htaccess
Serwer Apache ma wbudowane funkcje kontroli dostępu. Najczęściej wykorzystywana jest kontrola na podstawie adresu IP klienta oraz według autentykacji podstawowej protokołu HTTP Wymagania konfiguracji serwera APACHE: LoadModule auth_module/mod_auth.so AllowOverride All AccessFileName .htaccess
5
Uwierzytelnianie przez .htaccess
Uwierzytelnianie można wprowadzić poprzez: dokonanie zmian w plikach konfiguracyjnych Apache dokonanie zmian w pliku htaccess lub httpd (pliki te będą znajdowały się w chronionym katalogu) Korzystanie z pliku .htaccess jest mniej efektywne od wykorzystania standardowych plików konfiguracyjnych, ponieważ jest on odczytywany za każdym żądaniem pliku z katalogu zawierającego plik .htaccess. Jednak jeżeli witryna jest umieszczona na dzierżawionym serwerze, nie mamy dostępu do jego plików konfiguracyjnych.
6
Okienko logowania Mozilla Firefox Internet Explorer Odmowa żądania
7
Ograniczenia dostępu do katalogu wyłącznie do wybranych adresów IP
Order Allow,Deny Allow from localhost Allow from /24 Allow from p.lodz.pl .htaccess Powoduje ograniczenie dostępu do katalogu tylko lokalnej maszynie ( ) oraz sieci wewnętrznej (np /24) i domeny p.lodz.pl Opcja Order definiuje kolejność sprawdzania dyrektyw Allow i Deny. Allow,Deny komputery są domyślnie blokowane, a dyrektywy Deny są ważniejsze od Allow (tzn. Deny może zablokować maszynę z Allow). Natomiast dla Deny,Allow komputery domyślnie otrzymują dostęp, a Allow jest ważniejszy od Deny.
8
Tworzenie pliku z hasłami
$ htpasswd -c hasla.txt user1 New password: haslo Re-type new password: haslo Adding password for user user1 $ htpasswd hasla user2 New password: haslo2 Re-type new password: haslo2 Adding password for user user2 hasla.txt user1:WvzodahMR9USk user2:YzASzTGEo2VMA
9
Plik .htaccess Dyrektywa AuthName określa tekst monitu
AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require user user1 <Files tajne.php tajne2.php> AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require valid-user </Files> Dyrektywa AuthName określa tekst monitu Dyrektywa Require określa użytkowników, którzy będą mieli dostęp do podanej witryny Dyrektywa AuthUserFile zawiera ścieżkę do pliku z hasłami użytkowników
10
Tworzenie grup użytkowników
Można wymienić wielu użytkowników w jednej dyrektywie Require user. Jednak w przypadku, gdy listy użytkowników za bardzo się rozrastają, warto użyć grup. Plik grup składa się z wierszy, które zawierają nazwę grupy, znak dwukropka i kolejno wymienione nazwy członków. grupy.txt userzy: user1 user2 .htaccess AuthName "Strefa chroniona" AuthType Basic AuthUserFile /home/student1/hasla.txt AuthGroupFile /home/student1/grupy.txt Require group userzy
11
Przykład zastosowania grup
grupy.txt admins: przemek editors: kamil monika przemek webmasters: tomasz dorota wojtek przemek hasla.txt przemek:$apr1$ZU5.....$thDVsGbxOaIBMk1zAfjhr1 kamil:$apr1$fW5.....$t.dcYgk9gL/WM/XCdn3cA0 monika:$apr1$GX5.....$75/kolJSLGvLRL9su7K.h1 tomasz:$apr1$gC......$vsroOme7EtQhztYhBAAR81 dorota:$apr1$XD......$cj64qfBdE03fgbJlestSs/ wojtek:$apr1$sE......$ajKjhCQuYz/duYjDJV6Vu. grupa: editors grupa: webmasters grupa: admins
12
Cechy autoryzacji podstawowej w Apache
Wystarcza tylko jako proste uwierzytelnienie Zapisywanie dodatkowych danych wymaga wprowadzenia dodatkowego systemu zapisu Małe możliwości zarządzania użytkownikami Konieczny dostęp do konfiguracji serwera – zależność od serwera Wykorzystanie interfejsu przeglądarki Wylogowanie następuje poprzez zamknięcie przeglądarki Identyfikator i hasło są przesyłane w postaci jawnego tekstu
13
Rozszerzona metoda uwierzytelniania (digest access authentication)
Wykorzystuje się w niej funkcje haszujące (MD5, SHA1), dzięki czemu identyfikatory i hasła przesyłane są do serwera w postaci zakodowanej, a nie jawnej. Większość popularnych przeglądarek internetowych obsługuje metodę rozszerzoną, potrafi haszować dane autentykacyjne. Wymagania konfiguracyjne serwera: Sprawdzić czy jest zainstalowany moduł: mod_auth_digest.so Tworzenie pliku haseł: Program htdigest [nazwa użytkownika]:[nazwa zasobu]:[zahaszowane hasło]
14
Rozszerzona metoda uwierzytelniania
Format pliku .htaccess AuthDigestFile /home/wojtek/plik_hasel.txt AuthName "tajny_zasob" AuthType Digest Wszystkie inne właściwości tej metody uwierzytelniania są identyczne jak w przypadku metody podstawowej.
15
Uwierzytelnianie z modułem mod_auth_mysql
Metoda podstawowa i rozszerzona: Baza danych Identyfikatory i hasła są przechowywane w plikach tekstowych Identyfikatory i hasła są przechowywane w bazie co daje: -możliwość zarządzania kontami; -umożliwienie jednoczesnego dostępu do haseł Doinstalować libapache2-mod-auth-mysql -przyspieszenie procesu uwierzytelniania -większe bezpieczeństwo dzięki dodatkowej warstwie separującej
16
Konfiguracja .htaccess lub httpd.conf
AuthName "Test" AuthType Basic AuthUserFile /dev/null AuthBasicAuthoritative off Auth_MySQL on Auth_MySQL_Authoritative on Auth_MySQL_DB auth Auth_MySQL_Host localhost Auth_MySQL_User rola1 Auth_MySQL_Password bardzo_tajne_haslo Auth_MySQL_Password_Table auth_table Auth_MySQL_Username_Field user Auth_MySQL_Password_Field pass Auth_MySQL_Empty_Passwords off Auth_MySQL_Encryption_Types MySQL require valid-user Dostęp do bazy mysql Nazwy: - bazy, - tabeli z hasłami - opis kolumn tabeli Rodzaj haszowania hasła
17
Baza danych mysql> CREATE DATABASE auth; mysql> use auth;
mysql> CREATE TABLE `auth`.`auth_table` ( `user` VARCHAR( 30 ) NOT NULL , `pass` VARCHAR( 50 ) NOT NULL , `user_group` CHAR( 10 ) NOT NULL , PRIMARY KEY ( `user` ) ) ENGINE = MYISAM ; mysql> GRANT all privileges ON auth.auth_table TO rola1 IDENTIFIED BY 'bardzo_tajne_haslo'; mysql> insert into auth.auth_table values('wojtek', PASSWORD('wojtek'),'grupa');
18
Uwierzytelnianie podstawowe w PHP
Pozwala szczegółowo kontrolować dostęp do zasobów Możliwość walidacji danych Możliwość monitorowania czynności podejmowanych przez użytkownika Jeśli brak jest dostępu do konfiguracji serwera jest to jedyne możliwe rozwiązanie Niezależność od platformy serwerowej i przenośność
19
Skrypt uwierzytelniający
<?php $user = $_SERVER['PHP_AUTH_USER']; //pobr. id przesł. przez przegl. $password = $_SERVER['PHP_AUTH_PW']; // pobranie hasła // porównanie id i haseł - otrzymanych od użytkownika i // przechowywanych po stronie serwera (tutaj: hard code) if ($user != "przemek" || $password != "haslo1") // jeśli niepopr. { // wysłanie żądania uwierzytelnienia header('WWW-Authenticate: Basic realm="Chronione zasoby"'); header('HTTP/ Unauthorized'); echo "<H4>[ Błąd 401! ]</H4>"; echo "<H3>Dostęp do zasobów wymaga uwierzytelnienia!</H3>"; } else {// uwierzytelnienie przebiegło poprawnie echo "<H4>[ Uwierzytelnienie przebiegło poprawnie ]</H4>"; echo "Właściwa część chronionej strony"; }?>
20
Uwierzytelnianie z użyciem PHP, MySQL i mechanizmu sesji
Dostarczana funkcjonalność pozwala zapewnić bezpieczeństwo na bardzo wysokim poziomie. Umożliwia pełną identyfikację użytkownika i jego żądań w serwisie WWW. Kontrola sesji znacznie ułatwia uwierzytelnianie użytkowników – loginy i hasła przesyłane są przez użytkownika tylko jeden raz. Może być stosowana do śledzenia działań użytkowników czy zapamiętywania ich preferencji. Umożliwia realizację procesu wylogowania. Wygląd i działanie monitu logowania zależy nie od przeglądarki, ale od aplikacji WWW.
21
Skrypt uwierzytelniający
index.php <? session_start(); $msg = "Użytkownik niezalogowany.<br>Proszę się zalogować."; if(!empty($_POST['login']) && !empty($_POST['password'])) { /* ewentualna walidacja pól formularza */ $db $_POST['login'], $_POST['password']); if (!$db) $msg = "Niepoprawny login lub hasło!"; else {// selekcja bazy danych @mysql_select_db('auth2', $db) or die("Baza danych niedostępna."); // ustawienie zmiennej sesji dla użytkownika $_SESSION["id_".$_POST['login']] = $_POST['password']; // przekierowanie użytkownika do chronionej strony header("Location: authuser.php?id=".$_POST['login']); } ?>
22
Skrypt uwierzytelniający
authuser.php <? session_start(); if(isset($_SESSION["id_".$_GET['id']])) $usname = "Użytkownik zalogowany jako [".$_GET['id']."]"; else { header("Refresh: 3; URL=index.php"); die("Musisz najpierw się zalogować!<br> Za chwilę zostaniesz przekierowany na stronę logowania..."); } ?> Aby wylogować się z serwisu wystarczy jedynie usunąć odpowiednią zmienną sesji z użyciem funkcji unset().
23
Autoryzacja przez PHPlib
PHP Base Library – zestaw klas stanowiących elastyczną implementację obsługi : – sesji – autoryzacji – komunikacji z bazą danych MySQL PostgreSQL mSQL Oracle, Sybase Microsoft SQL Server ODBC
24
PHPlib – klasy bazowe - DB_Sql - Page Management
- CT_Sql - CT_Split_Sql - CT_Shm - CT_Dbm - CT_Ldap - Session - Auth - Perm User
25
Autoryzacja PHPlib – cechy
autoryzacja sesji przez uwierzytelnienie użytkownika po stronie klienta możliwość cofnięcia autoryzacji – wylogowania – koniec czasu ważności sesji zastosowanie bazy danych użycie formularzy logowania html przeprowadzanie dla wybranej strony WWW zintegrowanie ze schematem sprawdzania uprawnień użytkowników
26
Autoryzacja PHPlib – przygotowanie klas
Połączenie z bazą danych, ustawienie parametrów interfejsu class MySqlDB extends DB_Sql { var $Host = "localhost"; var $Database = "auth_users"; var $User = "student"; var $Password = "pass"; }
27
PHPLib – przygotowanie klas
class MySqlCt extends CT_Sql { var $classname = "MySqlCt"; var $database_table = "active_sessions"; var $database_class = "MySqlDB"; } klasa określająca parametry kontenera mysql> CREATE TABLE active_sessions ( sid varchar(32) not null, name varchar(32) not null, val text, changed varchar(14) not null, PRIMARY KEY (name, sid), KEY changed (changed) ); standardowa postać tabeli wymaganej przez mechanizm obsługi sesji w PHPlib
28
PHPLib – przygotowanie klas
Klasa określająca parametry sesji class MySqlSession extends Session { var $classname = "MySqlSession"; var $mode = "cookie"; var $lifetime = 0; var $that_class = "MySqlCt"; var $allowcache_expire = 0; var $allowcache = "no"; }
29
PHPLib – przygotowanie klas
Klasa definiująca parametry oraz sposób przeprowadzenia autoryzacji class MyAuth extends Auth { var $classname = "MyAuth"; var $lifetime = 20; function auth_loginform() { // wyświetlenie formularza logowania include( "./logform.inc" ); } function auth_validatelogin() { global $name, $password; $objDB = new MySqlDB; $query = sprintf("select id from users where (nick='%s') and (pass='%s')",$name,$password); $objDB->query( $query ); if ( $objDB->num_rows() > 0 ) return $name; else return false; }//koniec klasy
30
Szkielet strony chronionej przez mechanizm autoryzacji PHPlib
<? page_open( array( "sess" => "MySqlSession" "auth" => "MyAuth" ) ); ?> Chroniona zawartość strony page_close();
31
Schemat przeprowadzania autoryzacji
wylogowanie, w dowolnej chwili przez wywołanie : $auth->logout();
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.