Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Administracja systemami operacyjnymi Wiosna 2014 Wykład 4 Autoryzacja w aplikacjach WWW dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki.

Podobne prezentacje


Prezentacja na temat: "Administracja systemami operacyjnymi Wiosna 2014 Wykład 4 Autoryzacja w aplikacjach WWW dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki."— Zapis prezentacji:

1 Administracja systemami operacyjnymi Wiosna 2014 Wykład 4 Autoryzacja w aplikacjach WWW dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki 1

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 2

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 3

4 Uwierzytelnianie przez.htaccess Wymagania konfiguracji serwera APACHE: LoadModule auth_module/mod_auth.so AllowOverride All AccessFileName.htaccess LoadModule auth_module/mod_auth.so AllowOverride All AccessFileName.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 4

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. 5 Jednak jeżeli witryna jest umieszczona na dzierżawionym serwerze, nie mamy dostępu do jego plików konfiguracyjnych.

6 Okienko logowania Internet Explorer Mozilla Firefox Odmowa żądania 6

7 Ograniczenia dostępu do katalogu wyłącznie do wybranych adresów IP Opcja Order definiuje kolejność sprawdzania dyrektyw Allow i Deny. Powoduje ograniczenie dostępu do katalogu tylko lokalnej maszynie ( ) oraz sieci wewnętrznej (np /24) i domeny p.lodz.pl 7 Order Allow,Deny Allow from localhost Allow from /24 Allow from p.lodz.pl Order Allow,Deny Allow from localhost Allow from /24 Allow from p.lodz.pl.htaccess 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 -c hasla.txt user1 New password: haslo Re-type new password: haslo Adding password for user user1 hasla.txt user1:WvzodahMR9USk user2:YzASzTGEo2VMA user1:WvzodahMR9USk user2:YzASzTGEo2VMA 8 $ htpasswd hasla user2 New password: haslo2 Re-type new password: haslo2 Adding password for user user2

9 Plik.htaccess AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require user user1 AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require user user1 AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require valid-user AuthName "Tajny zasób" AuthType Basic AuthUserFile /home/student1/hasla.txt Require valid-user Dyrektywa AuthName określa tekst monitu 9 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 grupy.txt userzy: user1 user2.htaccess AuthName "Strefa chroniona" AuthType Basic AuthUserFile /home/student1/hasla.txt AuthGroupFile /home/student1/grupy.txt Require group userzy AuthName "Strefa chroniona" AuthType Basic AuthUserFile /home/student1/hasla.txt AuthGroupFile /home/student1/grupy.txt Require group userzy 10 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.

11 Przykład zastosowania grup grupa: admins grupa: webmasters grupa: editors 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. 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. grupy.txt admins: przemek editors: kamil monika przemek webmasters: tomasz dorota wojtek przemek admins: przemek editors: kamil monika przemek webmasters: tomasz dorota wojtek przemek 11

12 Cechy autoryzacji podstawowej w Apache Wystarcza tylko jako proste uwierzytelnienie Konieczny dostęp do konfiguracji serwera – zależność od serwera Małe możliwości zarządzania użytkownikami Zapisywanie dodatkowych danych wymaga wprowadzenia dodatkowego systemu zapisu Wykorzystanie interfejsu przeglądarki Wylogowanie następuje poprzez zamknięcie przeglądarki Identyfikator i hasło są przesyłane w postaci jawnego tekstu 12

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. 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] 13 Większość popularnych przeglądarek internetowych obsługuje metodę rozszerzoną, potrafi haszować dane autentykacyjne.

14 Rozszerzona metoda uwierzytelniania Format pliku.htaccess AuthDigestFile /home/wojtek/plik_hasel.txt AuthName "tajny_zasob" AuthType Digest 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. 14

15 Uwierzytelnianie z modułem mod_auth_mysql Identyfikatory i hasła są przechowywane w plikach tekstowych Identyfikatory i hasła są przechowywane w bazie co daje: Metoda podstawowa i rozszerzona: Baza danych 15 -możliwość zarządzania kontami; -umożliwienie jednoczesnego dostępu do haseł -przyspieszenie procesu uwierzytelniania -większe bezpieczeństwo dzięki dodatkowej warstwie separującej Doinstalować libapache2-mod-auth-mysql

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 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 16

17 Baza danych 17 mysql> CREATE DATABASE auth; mysql> use auth; 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> 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ść 18

19 Skrypt uwierzytelniający 19

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. Wygląd i działanie monitu logowania zależy nie od przeglądarki, ale od aplikacji WWW. Umożliwia realizację procesu wylogowania. 20

21 Skrypt uwierzytelniający index.php 21

22 Skrypt uwierzytelniający authuser.php Aby wylogować się z serwisu wystarczy jedynie usunąć odpowiednią zmienną sesji z użyciem funkcji unset(). 22

23 Autoryzacja przez PHPlib – sesji PHP Base Library – zestaw klas stanowiących elastyczną implementację obsługi : 23 – 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 24

25 Autoryzacja PHPlib – cechy autoryzacja sesji przez uwierzytelnienie użytkownika po stronie klienta 25 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"; } class MySqlDB extends DB_Sql { var $Host = "localhost"; var $Database = "auth_users"; var $User = "student"; var $Password = "pass"; } 26

27 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) ); 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) ); klasa określająca parametry kontenera standardowa postać tabeli wymaganej przez mechanizm obsługi sesji w PHPlib class MySqlCt extends CT_Sql { var $classname = "MySqlCt"; var $database_table = "active_sessions"; var $database_class = "MySqlDB"; } class MySqlCt extends CT_Sql { var $classname = "MySqlCt"; var $database_table = "active_sessions"; var $database_class = "MySqlDB"; } 27 PHPLib – przygotowanie klas

28 class MySqlSession extends Session { var $classname = "MySqlSession"; var $mode = "cookie"; var $lifetime = 0; var $that_class = "MySqlCt"; var $allowcache_expire = 0; var $allowcache = "no"; } class MySqlSession extends Session { var $classname = "MySqlSession"; var $mode = "cookie"; var $lifetime = 0; var $that_class = "MySqlCt"; var $allowcache_expire = 0; var $allowcache = "no"; } Klasa określająca parametry sesji 28 PHPLib – przygotowanie klas

29 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 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 29 PHPLib – przygotowanie klas

30 Szkielet strony chronionej przez mechanizm autoryzacji PHPlib "MySqlSession" "auth" => "MyAuth" ) ); ?> Chroniona zawartość strony "MySqlSession" "auth" => "MyAuth" ) ); ?> Chroniona zawartość strony 30

31 Schemat przeprowadzania autoryzacji wylogowanie, w dowolnej chwili przez wywołanie : $auth->logout(); 31


Pobierz ppt "Administracja systemami operacyjnymi Wiosna 2014 Wykład 4 Autoryzacja w aplikacjach WWW dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki."

Podobne prezentacje


Reklamy Google