XV Seminarium PLOUG Warszawa Maj 2007 Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application Server Identity Management Maciej Zakrzewicz PLOUG, Politechnika Poznańska mzakrzewicz}@cs.put.poznan.pl Informacja o autorze. Pracownik Instytutu Informatyki Politechniki Poznańskiej oraz prezes Zarządu Stowarzyszenia Polskiej Grupy Użytkowników Systemu Oracle. Zainteresowania naukowe obejmują eksplorację danych (data mining), systemy baz danych/hurtowni danych oraz technologie internetowe. Dla krajowych i zagranicznych uniwersytetów oraz przedsiębiorstw (m.in. Niemcy, Wielka Brytania, USA, Słowacja, Słowenia) prowadzi wykłady i szkolenia z zakresu projektowania i implementacji systemów informatycznych. Kieruje i doradza w projektach informatycznych realizowanych w architekturach internetowych. Autor ponad 100 publikacji z zakresu odkrywania zbiorów częstych, przetwarzania zapytań eksploracyjnych, adaptatywnych serwerów WWW, technik indeksowania baz danych, strojenia systemów baz danych, standardów Java dla baz danych i dla aplikacji wielowarstwowych. Współtwórca serii konferencji i seminariów PLOUG, służących transferowi wiedzy i technologii wśród krajowych przedsiębiorstw informatycznych.
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 45 Struktura prezentacji Wprowadzenie do Oracle Application Server 10g Identity Management Oracle Internet Directory Uwierzytelnianie użytkowników bazy danych za pomocą Oracle Internet Directory Single Sign-On Server Uwierzytelnianie Single Sign-On dla aplikacji obcych Podsumowanie Wprowadzenie do Oracle Application Server 10g Identity Management
46 Maciej Zakrzewicz Oracle Application Server 10g (OAS10g) OAS10g to rodzina produktów umożliwiających budowę środowiska serwera aplikacji W skład OAS10g wchodzą cztery rozłączne produkty: OracleAS Web Cache serwer buforujący OracleAS Middle Tier serwer aplikacji OracleAS Identity Management serwer zarządzania bezpieczeństwem OracleAS Metadata Repository repozytorium metadanych Produkty OAS10g Web Cache AS Cluster Web Cache przyjmuje nadchodzące żądania, rozprasza żądania pomiędzy dostępne serwery aplikacji (klaster), buforuje i przekazuje odpowiedzi na żądania Middle Tier na żądanie użytkownika wykonuje aplikację Identity Management uwierzytelnia i autoryzuje dostęp użytkownika do aplikacji Metadata Repository przechowuje definicje użytkowników, ich hasła, uprawnienia, parametry konfiguracyjne serwera aplikacji, kod niektórych rodzajów aplikacji Middle Tier Identity Management Middle Tier... Infrastructure Middle Tier Metadata Repository
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 47 OracleAS Middle Tier serwlety Java, JSP, EJB Oracle Containers for J2EE (OC4J) żądania HTTP programy CGI, FastCGI, Perl CGI Oracle HTTP Server (OHS) formularze Oracle Forms 9i Forms Services raporty Oracle Reports 9i Reports Services pliki HTML, XML,... Discoverer portlety Java procedury PL/SQL raporty Oracle Discoverer portlety PL/SQL Portal komponenty SOAP WebServices Web Services OracleAS Web Cache OPMN administrator Web Cache Manager żądania HTTP Oracle Web Cache pamięć buforowa... żądania HTTP
48 Maciej Zakrzewicz Identity Management Delegated Administration Service (DAS) Oracle Containers for J2EE (OC4J) HTTP Oracle HTTP Server (OHS) Single Sign-On Server (SSO) LDAP Oracle Internet Directory (OID) HTTP Oracle Certificate Authority (OCA) Identity Management - komponenty Oracle Internet Directory (OID) to serwer LDAP, wykorzystywany przez OAS10g do przechowywania nazw, haseł i uprawnień użytkowników oraz niektórych parametrów konfiguracyjnych OAS10g Delegated Administration Service (DAS) to narzędzie dla administratora i użytkowników, dostępne przez przeglądarkę WWW, umożliwiające modyfikacje definicji użytkowników i ich uprawnień w OID Single Sign-On Server (SSO) to centralny serwer uwierzytelniania użytkowników, do wykorzystania przez aplikacje zainstalowane na OAS10g Oracle Certificate Authority (OCA) to automatyczny komponent służący do wydawania i walidacji certyfikatów klucza publicznego dla użytkowników końcowych
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 49 Metadata Repository Metadata Repository (MR) to baza danych Oracle10g, przechowująca: niektóre parametry konfiguracyjne OAS10g kod aplikacji zrealizowanych w technologii Oracle Portal i Oracle Discoverer katalogową bazę danych Oracle Internet Directory MR jest zbiorem schematów użytkowników utworzonych w standardowej bazie danych Oracle9i MR znajduje się w bazie danych zainstalowanej podczas instalacji OAS10g lub w istniejącej wcześniej bazie danych Oracle9i (MR instalowane za pomocą Repository Configuration Assistant) Oracle Internet Directory
50 Maciej Zakrzewicz Hierarchiczna katalogowa baza danych Gromadzi i udostępnia wpisy zorganizowane w strukturę drzewiastą Każdy wpis zawiera zbiór atrybutów z wartościami Najczęściej wykorzystywana do implementacji książek adresowych e-mail opisu zasobów systemowych przechowywania parametrów konfiguracyjnych przechowywania definicji, haseł i uprawnień użytkowników LDAP: standard dla hierarchicznych katalogowych baz danych uproszczenie X.500 definiuje obiektową drzewiastą strukturę danych - DIT (Directory Information Tree) protokół komunkacyjny/język zapytań/api dla C, Javy, Perla, PHP, itd. rozproszenie, replikacja Directory Information Tree Politechnika Poznańska Wydział Informatyki i Zarządzania root cn: pp nazwa: Politechnika Poznańska ulica: Piotrowo 2 miasto: Poznań Maciej Zakrzewicz klucz główny - distinguished name (DN): cn=maciej, cn=wiiz, cn=pp cn: maciej imię: Maciej nazwisko: Zakrzewicz telefon: 616652993 hasło: *****
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 51 Oracle Internet Directory (OID) System zarządzania bazą danych LDAP v3 Składnik Oracle Application Server 10g Wykorzystywany do przechowywania definicji, haseł i uprawnień użytkowników Używany także do gromadzenia wybranych parametrów konfiguracyjnych Oracle Application Server 10g, np.: parametry Oracle Portal definicje farmy serwerów certyfikaty PKI identity management realm Struktura DIT w OID root pl Server Configurations OracleSchemaVersion OracleContext poznan put Users Groups maciej marek pracownicy administratorzy dn: cn=maciej,cn=users,dc=put,dc=poznan,dc=pl
52 Maciej Zakrzewicz Definicja osoby w OID DIT cn - "krótka" nazwa użytkownika createtimestamp - data utworzenia creatorsname - nazwa "dn" osoby, która utworzyła definicję employeenumber - numeryczny identyfikator osoby givenname - imię mail - adres e-mail modifytimestamp - data ostatniej modyfikacji sn - nazwisko telephonenumber - numer telefonu title - stanowisko userpassword - hasło Definicja grupy w DIT OID cn - "krótka" nazwa grupy createtimestamp - data utworzenia creatorsname - nazwa "dn" osoby, która utworzyła definicję description - nazwa opisowa displayname - nazwa wyświetlana przez narzędzia modifytimestamp - data ostatniej modyfikacji uniquemember - lista nazw "dn" członków grupy
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 53 Architektura OID żądania LDAP OID odwzorowania drzewo-tabele ODS Metadata Repository Oracle 10g RDBMS Uruchamianie i zatrzymywanie OID Application Server Control OPMNCTL C:\Oracle\infra\opmn\bin>opmnctl stopproc ias-component=oid opmnctl: stopping opmn managed processes... C:\Oracle\infra\opmn\bin>opmnctl startproc ias-component=oid opmnctl: starting opmn managed processes...
54 Maciej Zakrzewicz Administrowanie OID: Oracle Directory Manager "orcladmin" - predefiniowane konto administratora (opis poza DIT) uruchamianie komendą "oidadmin" Definicja osoby w Oracle Directory Manager DIT węzeł atrybut wartość
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 55 Definicja polityki obsługi haseł Okres ważności hasła, minimalna liczba znaków, liczba cyfr, niedozwolone hasła, rozmiar historii haseł, maksymalna liczba pomyłek, okres blokowania konta, itp. Zmiana hasła administratora OID Definicja administratora OID (orcladmin) nie jest przechowywana w DIT Do zmiany hasła administratora służy zakładka "System Passwords"
56 Maciej Zakrzewicz orcladmin vs. orcladmin Istnieje dwóch (lub więcej) użytkowników o nazwie "orcladmin" Administrator OID: "cn=orcladmin" Administrator lokalny, związany z Identity Management Realm: "cn=orcladmin,cn=users,dc=put,dc=poznan,dc=pl" Administrator lokalny może zarządzać wyłącznie obiektami znajdującymi się w jego drzewie Identity Management Realm Delegated Administration Service (DAS) Narzędzie WWW umożliwiające tworzenie i edycję definicji osób i grup w DIT OID Wygodniejsze w obsłudze od Oracle Directory Manager Może być wykorzystywane przez użytkowników końcowych w celu zmiany hasła lub przeszukiwania katalogu Jedna instalacja obsługuje jeden Identity Management Realm Logowanie poprzez SSO Przeglądarka DAS OHS OC4J OID MR
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 57 Wywołanie DAS Logowanie Definicja nowej osoby Lokalny "orcladmin"
58 Maciej Zakrzewicz Edycja definicji osoby Pozostałe narzędzia OID ldapadd ldapaddmt ldapbind ldapcompare ldapdelete ldapmoddn ldapmodify ldapmodifymt ldapsearch bulkload ldifwrite bulkmodify bulkdelete Np. usunięcie węzła z DIT: ldapdelete -h localhost -p 389 -D "cn=orcladmin" -w "welcome1" "cn=maciej,cn=users,dc=poznan,dc=pl"
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 59 Uwierzytelnianie użytkowników serwera bazy danych z użyciem OID Wprowadzenie W podstawowej konfiguracji, serwer bazy danych Oracle 10g przechowuje hasła użytkowników w tabelach słownika danych (sys.user$) Uwierzytelnianie użytkownika polega na porównaniu zakodowanego hasła wprowadzonego przez użytkownika z hasłem zapisanym w słowniku danych Istnieje możliwość powierzenia zadania uwierzytelniania użytkownika bazy danych zewnętrznemu serwerowi LDAP, np. OID nazwa, hasło baza danych DN, hasło OID
60 Maciej Zakrzewicz Konfiguracja uwierzytelniania przez OID Powiązanie serwera bazy danych z OID Rejestracja serwera bazy danych w OID Tworzenie kont użytkowników uwierzytelnianych przez OID (opcjonalnie) Tworzenie kont użytkowników typu "Enterprise", nie posiadających odrębnych schematów w bazie danych Powiązanie serwera bazy danych z OID parametry połączenia z OID Directory Usage Configuration
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 61 Powiązanie serwera bazy danych z OID Lokalizacja bazy danych w organizacji ldap.ora # ldap.ora Network Configuration File: C:\Oracle\infra\network\admin\ldap.ora # Generated by Oracle configuration tools. DIRECTORY_SERVERS= (localhost:389:636) DEFAULT_ADMIN_CONTEXT = "dc=localhost,dc=com" DIRECTORY_SERVER_TYPE = OID Rejestracja serwera bazy danych w OID Użytkownik uprawniony do rejestrowania bazy danych (cn=orcladmin)
62 Maciej Zakrzewicz Utworzenie konta użytkownika uwierzytelnianego przez OID SQL> create user maciej małe "u" identified globally as 'cn=maciej,cn=users,dc=poznan,dc=pl; Utworzono użytkownika. SQL> grant connect to maciej; Pomyślnie przyznano uprawnienia. SQL> connect maciej/welcome1 Połączono. Single Sign-On Server
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 63 Single Sign-On Server (SSO) Składnik Oracle Application Server 10g umożliwiający pojedyncze uwierzytelnianie użytkowników w imieniu wielu aplikacji Korzysta z definicji użytkowników zgromadzonych w OID Może być wykorzystywany w celu ochrony dostępu do aplikacji Java EE, Portal, Forms, Reports, itp. Działanie SSO (1/3) Przeglądarka żądanie 1 uruchomienia aplikacji OHS aplikacja mod_sso 2 czy uwierzytelniony? nie. 3 przekierowanie 4 wywołanie strony logowania OHS 4 SSO OC4J 5 weryfikacja nazwy i hasła OID MR
64 Maciej Zakrzewicz Działanie SSO (2/3) żądanie 4 uruchomienia aplikacji + SSO_ID OHS mod_sso 6 uruchomienie aplikacji aplikacja Przeglądarka 5 czy uwierzytelniony? tak. 3 przekierowanie 2 OHS wysłanie zmiennej Cookie z identyfikatorem sesji (SSO_ID) 2 SSO OC4J 1 OID rejestracja nowej sesji w tablicy sesji MR Działanie SSO (3/3) żądanie 1 uruchomienia aplikacji + SSO_ID OHS mod_sso 3 uruchomienie aplikacji aplikacja Przeglądarka 2 czy uwierzytelniony? tak. SSO OHS OC4J OID MR
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 65 Działanie SSO Konfiguracja OHS w celu użycia SSO mod_osso.conf <Location /efka> require valid-user AuthType Basic </Location> ścieżka dostępu do aplikacji pozwól korzystać z aplikacji dowolnemu użytkownikowi uwierzytelnionemu przez SSO Po zmianie ustawień konieczny restart OHS!
66 Maciej Zakrzewicz Autoryzacja użytkownika: Java EE out.println("<h2>parametry z Oracle Single Sign-On</h2>"); out.println("remote user: " + request.getremoteuser()); out.println("osso-user-dn: " + request.getheader("osso-user-dn")); out.println("osso-user-guid: " + request.getheader("osso-user-guid")); out.println("osso-subscriber: " + request.getheader("osso-subscriber")); Dane przekazywane aplikacji Java EE mogą być użyte przez programistę w implementacji kodu autoryzującego. Autoryzacja deklaratywna Java EE (1/2) web.xml <security-constraint> <web-resource-collection> <web-resource-name>menu</web-resource-name> <url-pattern>/efka/menu.jsp</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admins</role-name> </auth-constraint> </security-constraint> orion-application.xml <security-role-mapping name="admins"> <group name="administratorzy" /> </security-role-mapping> grupa OID <jazn provider="ldap" location="ldap://localhost:389" />
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 67 Autoryzacja deklaratywna Java EE (2/2) Wskaż OID jako repozytorium danych o użytkownikach Uwierzytelnianie użytkowników Oracle Forms/Reports OID gromadzi obiekty definiujące parametry połączenia użytkownika z bazą danych, tzw. RAD (Resource Access Descriptor) Każdy użytkownik OID może posiadać własne obiekty RAD, bądź korzystać z publicznych Obiekty RAD mogą być definiowane za pomocą DAS W celu skorzystania z SSO, plik formsweb.cfg powinien zawierać parametr "ssomode=true" Przeglądarka 1 2 SSO Forms Services 3 RAD OID 4 baza danych
68 Maciej Zakrzewicz Definiowanie Resource Access Descriptors (RAD)... Uwierzytelnianie SSO dla aplikacji obcych
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 69 Aplikacje obce (zewnętrzne) SSO może także służyć do uwierzytelniania użytkowników w imieniu aplikacji, które nie są kompatybilne z SSO Aplikacje WWW, które korzystają z formularzy logowania SSO może zapamiętać nazwy i hasła użytkowników dla aplikacji obcych, a następnie "ominąć" standardowy formularz logowania (pod warunkiem zalogowania do SSO) Konfiguracja wymaga znajomości HTML Przeglądarka użytkownik hasło SSO aplikacja obca SSO obcy użytkownik obce hasło Konfiguracja SSO: rozpoznanie aplikacji <form action="redirect.php" method="post">... <b>logowanie do SquirrelMail</b> Użytkownik: <input type="text" name="login_username" value="" /> Hasło:<input type="password" name="secretkey" /> <input type="hidden" name="js_autodetect_results" value="0" /> <input type="hidden" name="just_logged_in" value="1" /> <input type="submit" value="logowanie" />... </form>
70 Maciej Zakrzewicz Konfiguracja SSO: definicja metody dostępu "Wydobyte" z kodu źródłowego formularza HTML Konfiguracja SSO: definicja metody dostępu "Wydobyte" z kodu źródłowego formularza HTML
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 71 Korzystanie z uwierzytelniania przez SSO Pytanie o nazwę i hasło tylko przy pierwszym odwołaniu Instalacja Oracle Application Server 10g Identity Management
72 Maciej Zakrzewicz Uruchomienie instalatora, katalogi Katalog instalacyjny Program instalacyjny: setup.exe (MS Windows) lub runinstaller (UNIX) Wybór produktów Instalacja Identity Management i Metadata Repository
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 73 Instalacja zintegrowana lub rozproszona IM i MR na tym samym serwerze Rozproszona instalacja IM i MR Alokacja numerów portów Automatyczny lub manualny przydział portów TCP do komponentów
74 Maciej Zakrzewicz Struktura drzewa DIT Wybór Identity Management Realm Parametry bazy danych MR Parametry konfiguracyjne serwera bazy danych MR
Centralne uwierzytelnianie i autoryzacja użytkowników za pomocą Oracle Application... 75 Hasła w bazie danych Hasła dla kluczowych kont bazy danych MR Nazwa instancji, hasło administratorów Wybór nazwy instancji IM i hasła administratora Application Server Control
76 Maciej Zakrzewicz Podsumowanie Podsumowanie Funkcje uwierzytelniania i autoryzacji użytkowników jako usługi systemowe bezpieczeństwo wygoda administrowania wygoda użytkowania Role OID i SSO Mechanizmy dodatkowe: współpraca z zewnętrznymi systemami uwierzytelniania, np. Microsoft Active Directory archiwizacja i odtwarzanie - OracleAS Recovery Manager środowiska o podwyższonej niezawodności - klastry i OracleAS Disaster Recovery