Dr inż. Piotr Czapiewski. Kontrola dostępu – Zend_Auth, Zend_Acl.

Slides:



Advertisements
Podobne prezentacje
Rejestr Spraw Sądowych
Advertisements

PHP + MySQL część II.
Uwierzytelnianie i autoryzacja dostępu do portali
SIECI KOMPUTEROWE (SieKom) PIOTR MAJCHER WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU W SOCHACZEWIE Zarządzanie.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Obsługa bazy danych z poziomu phpMyAdmin
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Konfiguracja polcenie SUDO
„inwestujemy w Twoją przyszłość”
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
eFaktura w DHL Express Poland
Projekt współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka 8. Oś Priorytetowa:
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Dokumentacja do obsługi PWI (nowa wersja aplikacji)
Linux - polecenia.
Prezentacja funkcjonalności dziennika e-klasa
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Witaj. Zapraszamy Ciebie do zapoznania się z przewodnikiem, który pokaże jak założyć konto oraz w jaki sposób można korzystać z usług w serwisie iplay.pl.
SYSTEM REJESTRACJI UŻYTKOWNIKÓW W SERWISIE INTERNETOWYM Bezpieczny i scentralizowany system uwierzytelniania, autoryzacji oraz zarządzania użytkownikami.
PROCEDURA LOGOWANIA SIĘ DO PANELU AUTOR 1. Kliknij na zakładkę Autor Platforma edukacyjna.
System raportowania, ewaluacji oraz badania satysfakcji Klienta.
System rejestracji zawodników Polski Związek Judo 2006.
Struktura folderów w systemie Windows
Podręcznik użytkownika Extranet (wersja dla Klubów)
Aleksandra Drezno Promotor: mgr inż. Jerzy Stankiewicz
Systemy zarządzania treścią Wykład 5
Serwery Aplikacji Tworzenie bezpiecznych aplikacji.
Szkolenie dla bibliotekarzy MATERIAŁ POMOCNICZY KURS E-LEARNINGOWY O FINANSACH… KWESTIE TECHNICZNE Projekt realizowany z Narodowym Bankiem Polskim w.
JAK ZALOGOWAĆ SIĘ NA SWOJE KONTO FLP360
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Opracowali: Patryk Klemczak Tomasz Klemczak ODSIECZ WIEDEŃSKA.
Kształtowanie się granic II Rzeczypospolitej
SERWIS PORTALU ONTOLOGICZNEGO DEDYKOWANY DLA SYSTEMU OCS.
Serwery Aplikacji Bezpieczeństwo w Aplikacjach.NET uruchamianych pod IIS Arkadiusz Popa, WMiI, UŁ.
Prezentacja przykładowych rozwiązań realizujących autoryzację w serwisie WWW w oparciu o bazę LDAP Jerzy Szymański.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Politechnika Warszawska Wydział Elektryczny Kierunek: Informatyka stosowana Praca dyplomowa inżynierska Aplikacja do kontroli wydajności produkcji w.
WNIOSEK O PRZYZNANIE POMOCY
POGŁĘBIONA OCENA SYTUACJI FINANSOWEJ NA PODSTAWIE ANALIZY WSKAŹNIKOWEJ
Mechanika kwantowa dla niefizyków
Program Rozwoju Obszarów Wiejskich
HELIOTECHNIKA W chwili obecnej jest niekonkurencyjna w porównaniu ze źródłami konwencjonalnymi, ale jest to „czysta energia” dlatego wiąże się z nią wiele.
Zasilacze prądu stałego Czyli rzeczywiste źródła napięcia
Prof. nadzw. dr hab. inż. Jarosław Bartoszewicz
Mechanika kwantowa dla niefizyków
„ Mały Miś i polskie tradycje Bożego Narodzenia”
Prezentacje wykonali: Marcin Łukasik Wiktor Kołek
GOSPODAROWANIE ZASOBAMI W ORGANIZACJI
Podstawy pomagania SPPiIK, 2016 Anna Gromińska.
Sedymentacja.
Dotarcie do specyficznej grupy docelowej
Srebrna Małopolska regionalne inicjatywy na rzecz seniorów
O UTWORZENIE ZWIĄZKU METROPOLITALNEGO W WOJEWÓDZTWIE ŚLĄSKIM
Funkcje generujące w kombinatoryce
MODELE EPIDEMIOLOGICZNE
Dowody matematyczne - zadania podstawowe
Ewolucja gwiazd.
Potencjał chemiczny Potencjał chemiczny ma charakter siły uogólnionej,
Publicznej Szkole Podstawowej nr 4 im. Tadeusza Kościuszki
Zasady poprawnej komunikacji – jak uniknąć konfliktów ?
Edukacja psychologiczna
Czym jest mowa nienawiści?
TWORZYWA CERAMICZNE JAKO SKŁADNIK KOMPOZYTÓW
Media transmisyjne.
Trybunał Stanu. Stany nadzwyczajne
Archiwum Prac Dyplomowych Czynności wykonywane przez studentów
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
Zapis prezentacji:

dr inż. Piotr Czapiewski

Kontrola dostępu – Zend_Auth, Zend_Acl

Uwierzytelnianie – Zend_AuthAutoryzacja – Zend_Acl

Zend_Auth Obsługa logowania użytkowników Adaptery Obsługa konkretnej usługi uwierzytelniania Baza danych, LDAP, plik z listą użytkowników

Wzorzec Singleton Zend_Auth::getInstance() Dostęp do obiektu Zend_Auth Zend_Auth::getInstance()->hasIdenity() Sprawdzenie, czy użytkownik jest zalogowany

 Adapter – Zend_Auth_Adapter_DbTable  Pobiera dane użytkowników z tabeli w bazie danych  Inicjalizacja adaptera  Przekazanie loginu i hasła podanego przez użytkownika $db = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'nazwa', 'haslo'); $db = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'nazwa', 'haslo'); $authAdapter->setIdentity($dane['user']); $authAdapter->setCredential($dane['pass']);

 Logowanie – c.d.  Sprawdzenie loginu i hasła (porównanie z bazą danych)  Czy autentykacja się powiodła?  Zapamiętaj dane użytkownika w obiekcie Zend_Auth $result = $authAdapter->authenticate(); $result->isValid() $daneUzytkownika = $authAdapter->getResultRowObject(); Zend_Auth::getInstance()->getStorage()->write($daneUzytkownika);

$db = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'nazwa', 'haslo'); $authAdapter->setIdentity($dane['user']); $authAdapter->setCredential($dane['pass']); $result = $authAdapter->authenticate(); if($result->isValid()) { $daneUzytkownika = $authAdapter->getResultRowObject(); Zend_Auth::getInstance()->getStorage()->write($daneUzytkownika); $this->_helper->redirector('index', 'index'); } else { $this->view->komunikat = 'Logowanie nieudane'; } $db = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'nazwa', 'haslo'); $authAdapter->setIdentity($dane['user']); $authAdapter->setCredential($dane['pass']); $result = $authAdapter->authenticate(); if($result->isValid()) { $daneUzytkownika = $authAdapter->getResultRowObject(); Zend_Auth::getInstance()->getStorage()->write($daneUzytkownika); $this->_helper->redirector('index', 'index'); } else { $this->view->komunikat = 'Logowanie nieudane'; }

 ACL – Acces Control List  Określenie:  Ról (np. „admin”, „user”, „gość”)  Zasobów (np. akcje dodaj, edytuj, usuń, pokaż)  Uprawnień ról do zasobów

$acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); $acl->addRole(new Zend_Acl_Role('user'), 'guest'); $acl->addRole(new Zend_Acl_Role('admin'), 'user'); $acl->addResource(new Zend_Acl_Resource('index')); $acl->addResource(new Zend_Acl_Resource('error')); $acl->addResource(new Zend_Acl_Resource('uzytkownicy')); $acl->allow('guest', 'index', 'index'); $acl->allow('guest', 'index', 'pokaz'); $acl->allow('guest', 'uzytkownicy', 'login'); $acl->allow('user', 'index', 'dodaj'); $acl->allow('user', 'index', 'edytuj'); $acl->allow('user', 'index', 'usun'); $acl->allow('user', 'uzytkownicy', 'logout'); $acl->allow('admin', null);

 W którym miejscu sprawdzać uprawnienia?  Plugin, metoda preDispatch – wywoływana przed obsługą żądania użytkownika  Dodanie pluginu  Klasa Blog_Plugin_AclPlugin /application/plugins/AclPlugin  Dziedziczy z Zend_Controller_Plugin_Abstract  Rejestracja pluginu – wpis w application.ini : resources.frontController.plugins.acl = "Blog_Plugin_AclPlugin"

public function preDispatch(Zend_Controller_Request_Abstract $request) { // Przygotuj ACL $acl = new Zend_Acl();... // Przeprowadź autoryzację // - sprawdź kto jest zalogowany – Zend_Auth // - sprawdź, czy ma uprawnienia do danej akcji // jeśli nie – przekieruj do error/noauth... } public function preDispatch(Zend_Controller_Request_Abstract $request) { // Przygotuj ACL $acl = new Zend_Acl();... // Przeprowadź autoryzację // - sprawdź kto jest zalogowany – Zend_Auth // - sprawdź, czy ma uprawnienia do danej akcji // jeśli nie – przekieruj do error/noauth... }

public function preDispatch(Zend_Controller_Request_Abstract $request) { // Przygotuj ACL $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); $acl->addRole(new Zend_Acl_Role('user'), 'guest'); $acl->addRole(new Zend_Acl_Role('admin'), 'user'); $acl->addResource(new Zend_Acl_Resource('index')); $acl->addResource(new Zend_Acl_Resource('error')); $acl->addResource(new Zend_Acl_Resource('uzytkownicy')); $acl->allow('guest', 'index', 'index'); $acl->allow('guest', 'index', 'pokaz'); $acl->allow('guest', 'uzytkownicy', 'login'); $acl->allow('user', 'index', 'dodaj'); $acl->allow('user', 'index', 'edytuj'); $acl->allow('user', 'index', 'usun'); $acl->allow('user', 'uzytkownicy', 'logout'); $acl->allow('admin', null); // Przeprowadź autoryzację... }

public function preDispatch(Zend_Controller_Request_Abstract $request) { // Przygotuj ACL... // Przeprowadź autoryzację $auth = Zend_Auth::getInstance(); if($auth->hasIdentity()) { $role = $auth->getIdentity()->grupa; } else { $role = 'guest'; } $resource = $this->getRequest()->getControllerName(); $privilege = $this->getRequest()->getActionName(); if(!$acl->isAllowed($role, $resource, $privilege)) { if($role=='guest') { $request->setControllerName('uzytkownicy'); $request->setActionName('login'); } else { $request->setControllerName('error'); $request->setActionName('noauth'); } } }

 Generowanie elementów nawigacyjnych  Menu, breadcrumbs, mapa strony  Kontrola dostępu we współpracy z Zend_Acl – wyświetlanie tych pozycji menu, do których zalogowany użytkownik ma prawa dostępu

$pages = array( array( 'label' => 'Strona główna', 'controller' => 'index', 'action' => 'index' ), array( 'label' => 'Dodaj wpis', 'controller' => 'index', 'action' => 'dodaj', 'resource' => 'index', 'privilege' => 'dodaj' ) ); $nav = new Zend_Navigation($pages); echo $this->navigation()->menu($nav); $pages = array( array( 'label' => 'Strona główna', 'controller' => 'index', 'action' => 'index' ), array( 'label' => 'Dodaj wpis', 'controller' => 'index', 'action' => 'dodaj', 'resource' => 'index', 'privilege' => 'dodaj' ) ); $nav = new Zend_Navigation($pages); echo $this->navigation()->menu($nav);