Bezpieczeostwo serwisów internetowych



Podobne dokumenty
Kontrola dostępu w ASP.NET

Aplikacje Internetowe

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Konfiguracja Claims Based Authentication dla Microsoft SharePoint 2010

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Instrukcja konfiguracji funkcji skanowania

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

Technologia WebParts

Platforma e-learningowa

Aplikacje internetowe - laboratorium

Platforma e-learningowa

Problemy techniczne SQL Server

Procedury techniczne modułu Forte Kontroling. Ustawienia IIS

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Problemy techniczne SQL Server

Windows Server 2012 Active Directory

Usługi sieci Internet

Zaawansowane aplikacje internetowe - laboratorium

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Podręcznik konfiguracji wysyłania

Certyfikat niekwalifikowany zaufany Certum Silver. Instalacja i użytkowanie pod Windows Vista. wersja 1.0 UNIZETO TECHNOLOGIES SA

Podręcznik konfiguracji wysyłania

Instalacja systemu zarządzania treścią (CMS): Joomla

Aplikacje Internetowe

Kancelaria Prawna.WEB - POMOC

Projektowanie serwisów internetowych

Instrukcja instalacji

System wspomagania pracy Administratora Bezpieczeostwa Informacji Instrukcja Administratora Wersja

Zastępstwa Optivum. Jak przenieść dane na nowy komputer?

Instrukcja instalacji systemu elektronicznego obiegu dokumentów - esoda.

REFERAT O PRACY DYPLOMOWEJ

Tworzenie oraz zarządzanie użytkownikami w AD -Win Serwer 2008

Laboratorium A: Korzystanie z raportów zasad grupy/klucz do odpowiedzi

Windows Server 2008 Standard Str. 1 Ćwiczenia. Opr. JK. I. Instalowanie serwera FTP w Windows Server 2008 (zrzuty ekranowe z maszyny wirtualnej)

Pomoc dla usługi GMSTHostService. GMSTHostService. Pomoc do programu 1/14

Instrukcja pozyskania identyfikatora - UID

Część 3 - Konfiguracja

Wersja dokumentu: Data: 28 kwietnia 2015r.

Konfiguracja serwerów pocztowych na platformie Tradoro.pl

INSTRUKCJA KONFIGURACJI KLIENTA POCZTOWEGO

asix Autoryzacja dostępu do zasobów WWW systemu asix (na przykładzie systemu operacyjnego Windows 2008)

Instalacja i konfiguracja serwera IIS z FTP

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Pracownia internetowa w szkole ZASTOSOWANIA

Skrócona instrukcja funkcji logowania

Wersja dokumentu: Data: 17 listopada 2016 r.

Zalecana instalacja i konfiguracja Microsoft SQL Server 2016 Express Edition dla oprogramowania Wonderware

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

11. Autoryzacja użytkowników

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Certyfikat niekwalifikowany zaufany Certum Silver. Instrukcja dla uŝytkowników Windows Vista. wersja 1.1 UNIZETO TECHNOLOGIES SA

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Zadanie 1. Tworzenie nowej "strony sieci WEB". Będziemy korzystad ze stron w technologii ASP.NET.

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Instrukcja użytkownika

Dokumentacja wdrożeniowa Project Lord 1.0

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

mysupport Instrukcja obsługi dla użytkowników

Aplikacje www laboratorium

Instrukcja szybkiej instalacji. Przed przystąpieniem do instalacji należy zgromadzić w zasięgu ręki wszystkie potrzebne informacje i urządzenia.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Instrukcja logowania do systemu Rejestru Unii

Konfiguracja konta pocztowego na szkolnym serwerze

Instrukcja instalacji elektronicznego systemu obiegu dokumentów administracyjnych - esoda.

Wymagania do zdalnej instalacji agentów firmy StorageCraft

Exchange Konfiguracja protokołu SSL/TLS w serwerze pocztowym Exchange wersja 1.0

Laboratorium - Poznawanie FTP

INSTRUKCJA PLATFORMA KLIENTA CBIDGP

Wstęp INFORMATOR TECHNICZNY WONDERWARE. Wysyłanie wiadomości z programu Wonderware Historian. 1. Aktywowanie Database Mail

Problemy techniczne SQL Server

Instrukcja logowania do systemu Rejestru Unii dla nowych użytkowników

Jak przygotować kopię zapasową bazy danych programu MOL Optivum i udostępnić ją na potrzeby migracji do programu MOL NET+?

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Instrukcja logowania do systemu Rejestru Unii dla nowych użytkowników

SSI Web 8. (badania.kozminski.edu.pl) Instrukcja logowania i uruchamiania ankiety

Instrukcja logowania do systemu Rejestru Unii sprawdzenie identyfikatora użytkownika - URID

Zadanie 5. Automatyzacja tworzenia kont użytkowników

Problemy techniczne SQL Server

Procedura konfiguracji programu Outlook Express z wykorzystaniem protokołu POP3

Rozdział 5. Administracja kontami użytkowników

Problemy techniczne SQL Server

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Należy uruchomid program: Start-Wszystkie programy- Microsoft Office- Microsoft Office Access 2007

Wraz z wersją R2 dla systemu Windows 2008 Server nazewnictwo usług terminalowych uległa zmianie. Poniższa tabela przedstawia nową nomenklaturą:

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

Nowe notowania epromak Professional

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Praca w programie dodawanie pisma.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Transkrypt:

Piotr Bubacz Moduł 10 Wersja 1 Spis treści Bezpieczeostwo serwisów internetowych... 1 Informacje o module... 2 Przygotowanie teoretyczne... 3 Przykładowy problem... 3 Podstawy teoretyczne... 3 Uwagi dla studenta... 9 Dodatkowe źródła informacji... 9 Laboratorium podstawowe... 10 Problem 1 (czas realizacji 20 min)... 10 Problem 2 (czas realizacji 20 min)... 12 Problem 3 (czas realizacji 5 min)... 14

Informacje o module Opis modułu W tym module znajdziesz informacje dotyczące sposobów zabezpieczania dostępu do aplikacji internetowej przy pomocy mechanizmów autoryzacji. Poznasz kontrolki logowania oraz nauczysz się, jak można ukrywad opcje menu przed różnymi grupami użytkowników. Cel modułu Celem modułu jest przedstawienie wbudowanych w ASP.NET mechanizmów zabezpieczających dostęp do aplikacji internetowych. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: potrafił wykorzystad uwierzytelnianie oparte na formularzu potrafił zabezpieczad dostęp do aplikacji przed nieautoryzowanymi użytkownikami potrafił określad prawa dostępów dla różnych grup użytkowników Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: znad podstawy HTML i CSS znad zasady pracy w Visual Studio 2008 Mapa zależności modułu Zgodnie z mapą zależności przedstawioną na Rys. 1, przed przystąpieniem do realizacji tego modułu należy zapoznad się z materiałem zawartym w modułach Podstawy HTML, Kaskadowe Arkusze Stylów CSS i Wprowadzenie do ASP.NET. MODUŁ 14 MODUŁ 13 MODUŁ 1 MODUŁ 12 MODUŁ 2 MODUŁ 11 MODUŁ 10 MODUŁ 3 MODUŁ 9 MODUŁ 4 MODUŁ 8 MODUŁ 6 MODUŁ 5 Rys. 1 Mapa zależności modułu Strona 10-2

Przygotowanie teoretyczne Przykładowy problem Tworząc aplikacje internetowe często napotykamy problem związany z dodaniem możliwości uwierzytelniania użytkowników naszego serwisu. Dodatkowo musimy zapewnid mechanizm ograniczenia dostępu do zasobów dla określonych użytkowników lub grup użytkowników. Uwierzytelnianie użytkowników to nie tylko formularz, w którym wpisuje się nazwę i hasło. Za tym zagadnieniem kryje się szereg innych kwestii: jak i gdzie przechowywad informacje o użytkownikach, jak umożliwid rejestracje, jak ułatwid proces odzyskiwania hasła, jak w koocu ograniczyd dostęp do opcji menu i katalogów aplikacji. W tym celu wykorzystujemy mechanizmy uwierzytelnienia i autoryzacji. Tworzenie takich mechanizmów nie jest proste i musi byd poprzedzone dogłębną analizą problemu. W aplikacjach internetowych zależy nam na szybkim tworzeniu rozwiązao. W celu zapewnienia odpowiedniego poziomu zabezpieczeo możemy skorzystad z mechanizmów dostarczanych przez ASP.NET. Tworzenie, rejestracja, logowanie, zmiana hasła, przypomnienie hasła to najczęstsze przypadki użycia zarządzania użytkownikami. Tworząc takie formularze od podstaw musimy nie tylko zapewnid odpowiedni interfejs użytkownika, ale również zapewnid odpowiednie zapisanie tych danych do repozytorium. ASP.NET dostarcza nam gotowy zbiór podstawowych kontrolek ułatwiających te zadania. Podstawy teoretyczne Uwierzytelnianie użytkowników Uwierzytelnianie (ang. authentication) jest to proces, w którym sprawdza się, czy dany użytkownik jest tym, za kogo się podaje. Proces ten najczęściej wiąże się z podaniem przez użytkownika nazwy i hasła. W ASP.NET wspierane są różne mechanizmy uwierzytelniania: uwierzytelnianie Windows uwierzytelnianie za pomocą formularza uwierzytelnianie przy użyciu Windows Live ID Uwierzytelnianie Windows Uwierzytelnianie Windows można wykorzystywad, jeśli baza użytkowników znajduje się na kontrolerze domeny Windows. Najważniejszą zaletą takiego uwierzytelnienia jest możliwośd korzystania z istniejących kont systemowych oraz to, że nie potrzeba pisad dodatkowego kodu zarządzającego uwierzytelnieniem. Serwer IIS identyfikuje użytkownika za pomocą żetonów przyznanych użytkownikowi przy zalogowaniu do serwera. W celu konfiguracji uwierzytelniania Windows należy w pliku Web.config w sekcji <system.web> dopisad: <authentication mode="windows"/> Uwierzytelnianie Windows może byd wykorzystywane tylko w przypadku posiadania kont przez użytkowników na serwerze. Taka sytuacja ma miejsce najczęściej w przypadku aplikacji intranetowych. Uwierzytelnianie Windows jest domyślną metodą uwierzytelniania w aplikacjach ASP.NET. Uwierzytelnianie za pomocą formularza W przypadku gdy projektowana aplikacja ma działad w sieci Internet, posiadanie konta na serwerze przez wszystkich potencjalnych użytkowników aplikacji jest niemożliwe. Dodatkowo istnieje potrzeba przechowywania informacji o użytkownikach w innym miejscu niż system użytkowników Strona 10-3

Windows. Najczęściej dane takie przechowywane są w bazie danych. Uwierzytelnianie formularzy umożliwia łatwe i bezpieczne potwierdzanie tożsamości. Użytkownik w przypadku tej metody uwierzytelniania musi skorzystad ze specjalnej strony do wprowadzenia nazwy i hasła, które następnie jest sprawdzane z danymi zapisanymi w bazie danych, specjalnych plikach lub innych źródłach. W przypadku małej ilości użytkowników możliwe jest przechowywanie tych danych w pliku Web.config, jednak dla większych rozwiązao lepiej jest wykorzystad bazę danych. Standardowo uwierzytelnianie to wykorzystuje plik cookie do przechowywania informacji o uwierzytelnieniu między stronami. Plik taki jest wysyłany do serwera wraz z każdym żądaniem. Istnieje możliwośd wykorzystania adresu URL do przechowywania tej informacji w przypadku, kiedy przeglądarka użytkownika ma wyłączoną obsługę ciasteczek. Poniżej została przedstawiona podstawowa konfiguracje tego typu uwierzytelniania z dodatkowym znacznikiem <forms> określającym stronę logowania Zaloguj.aspx. <authentication mode="forms"> <forms loginurl="zaloguj.aspx" /> </authentication> Uwierzytelnianie przy użyciu Windows Live ID Windows Live ID to ogólnodostępny, jednolity system, umożliwiający dowolnym użytkownikom nie tylko klientom Microsoft korzystanie ze wszystkich stron Microsoft wymagających logowania. Każdy zarejestrowany użytkownik otrzymuje swój indywidualny identyfikator, który pomaga mu w poruszaniu się po wszystkich zasobach Microsoft, na całym świecie. Windows Live ID jest np. konieczny do wzięcia udziału w spotkaniu (konferencji lub seminarium) dzięki niemu rejestracja uczestników odbywa się łatwiej i szybciej. Windows Live ID został udostępniony programistom, aby łatwo mogli dołączyd globalne uwierzytelnianie do swoich aplikacji. Dzięki temu użytkownik nie musi posiadad na naszej stronie dodatkowego hasła. Wystarczy, że zaloguje się na dowolnej stronie wspierającej tę technologie i ma dostęp do wszystkich zasobów. Przechowywanie informacji o użytkownikach w bazie danych W przypadku uwierzytelnienie za pomocą formularza ASP.NET wykorzystuje standardowych dostawców SqlMembershipProvider i SqlRoleProvider. Wykorzystują one bazę danych SQL Server do przechowywania informacji o użytkownikach i rolach. Informacje te są przechowywane w szeregu tabel i dostęp do nich następuje przez procedury składowane. Standardowo informacje te są przechowywane w bazie ASPNETDB.MDF w katalogu App_Data. Umieszczając aplikacje internetową na serwerze dostawcy mamy dośd często ograniczenie ilości baz. Z tego względu, jeśli w aplikacji wykorzystywane są również inne dane, dośd często są one dodawane do tej właśnie bazy. Nie jest to rozwiązanie bezpieczne, ponieważ znajomośd nazwy bazy danych może ułatwid atak. Dodatkowo jeśli posiadamy już gotowe rozwiązanie bazodanowe i chcemy rozszerzyd naszą aplikację o możliwośd uwierzytelniania, możemy te informacje umieścid w naszej bazie danych. Aby umieścid niezbędne tabele i procedury w naszej bazie, musimy wykorzystad ASP.NET SQL Server Registration Tool (aspnet_regsql.exe). Narzędzie to może byd używane z linii poleceo lub z poziomu graficznego kreatora. W przypadku użycia linii poleceo mamy większe możliwości konfiguracji narzędzia. W tym celu musimy uruchomid linię poleceo VS 2008. W systemie Windows XP/2003 musimy wybrad Start -> Programy -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt, a następnie wydad polecenie: Strona 10-4

aspnet_regsql -A all -C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" -d "X:\Projekt\APP_DATA\moja_baza.mdf" Gdzie X:\Projekt to ścieżka do naszego projektu strony, a moja_baza.mdf, to plik zawierający bazę danych aplikacji. Po utworzeniu niezbędnych tabel i procedur należy poinformowad dostawców o konieczności korzystania z naszej bazy danych. W tym celu do pliku Web.config musimy dodad do sekcji <system.web> następujące informacje: <rolemanager enabled="true" defaultprovider="customizedroleprovider"> <providers> <add name="customizedroleprovider" type="system.web.security.sqlroleprovider" connectionstringname="connectionstring" /> </providers> </rolemanager> <membership defaultprovider="customizedmembershipprovider"> <providers> <add name="customizedmembershipprovider" type="system.web.security.sqlmembershipprovider" connectionstringname="connectionstring" /> </providers> </membership> Gdzie ConnectionString to nazwa naszego połączenia do bazy skonfigurowana w sekcji connectionstrings. Autoryzacja użytkowników Autoryzacja (ang. authorization) to proces, w którym sprawdzane jest, czy użytkownik o ustalonej wcześniej tożsamości ma prawo dostępu do zasobów, o które prosi. Uprawnienia mogą dotyczyd np. dostępu do katalogu lub pliku. Dostęp do plików Autoryzacja dostępu do pliku jest związana z prawami, jakie użytkownik ma w systemie, zatem aby używad tej metody należy stosowad uwierzytelnianie Windows. W celu konfiguracji uprawnieo należy wykorzystad narzędzia sytemu i skonfigurowad odpowiednie poziomy dostępu dla użytkowników. Dostęp do pliku w obrębie aplikacji W przypadku plików w obrębie aplikacji możliwe jest określenie dostępu do pojedynczej strony lub wirtualnego katalogu w aplikacji sieciowej. Możliwe jest użycie tego sposobu autoryzacji ze wszystkimi sposobami uwierzytelnienia. Dostęp do katalogu można ograniczyd w pliku Web.config umieszczonym w głównym katalogu aplikacji lub katalogu, którego dotyczą dane prawa. W celu ustalenia praw w wybranym katalogu należy utworzyd w nim plik Web.config, a następnie w sekcji <authorization> zezwolid (element <allow>) lub zabronid (element <deny>) dostępu do niego określonym użytkownikom lub grupom użytkowników. Do określania roli dopuszcza się również używanie następujących symboli zastępczych: * określa dowolnego użytkownika? określa użytkownika anonimowego Przykład zezwolenie dostępu dla użytkowników Adam, Karol oraz Michal i zabronienie dostępu dla użytkowników anonimowych. Strona 10-5

<authorization> <allow users="adam, Karol, Michal" /> <deny users="?" /> </authorization> W celu ustalenia praw dla całej aplikacji z określeniem katalogów aplikacji należy w głównym pliku Web.config dodad sekcję <location path="ściezka_do_katalogu">, a następnie sekcję <system.web>, a w niej sekcję <authorization>. Przykład: <location path="admin"> <system.web> <authorization> <allow roles="administrator" /> <deny users="*" /> </authorization> </system.web> </location> Kontrolki logowania Kontrolki logowania stanowią zbiór kontrolek serwerowych implementujących wszystkie najważniejsze elementy niezbędne do zarządzania użytkownikami i ich uwierzytelniania. Kontrolka Login Kontrolka Login (Rys. 2) umożliwia uwierzytelnienie użytkownika. Uwierzytelnienie odbywa się z pomocą formularza przy użyciu obiektu MembershipProvider zdefiniowanego w pliku Web.config. Rys. 2 Kontrolka Login Mechanizmy uwierzytelniania umożliwiają zapamiętanie użytkownika w pliku cookie, dzięki temu nie musi on za każdym razem wpisywad danych logowania. Kontrolka ChangePassword Kontrolka ChangePassword (Rys. 3) umożliwia zalogowanemu użytkownikowi zmianę hasła. Udana zmiana hasła powoduje wysłanie do użytkownika wiadomości e-mail. Rys. 3 Kontrolka ChangePassword Wysłanie poczty elektronicznej jest możliwe po wcześniejszym skonfigurowaniu parametrów serwera SMTP w pliku Web.config. Można to również zrobid przy pomocy ASP.NET Web Site Administration Tool. Strona 10-6

Przykład konfiguracji serwera poczty w pliku Web.config: <system.net> <mailsettings> <smtp from="od"> <network host="adresserwera" password="haslo" username="uzytkownik" /> </smtp> </mailsettings> </system.net> Kontrolka CreateUserWizard Kontrolka CreateUserWizard (Rys. 4) umożliwia rejestrację nowego użytkownika. Nowy użytkownik musi podad nazwę, hasło, adres e-mail oraz sekretne pytanie i odpowiedź. Sekretne pytanie i odpowiedź służą do odzyskiwania hasła w przypadku, gdy użytkownik je zapomni. Udane utworzenie użytkownika powoduje wysłanie wiadomości elektronicznej na podany adres. Rys. 4 Kontrolka CreateUserWizard Kontrolka PasswordRecovery Kontrolka PasswordRecovery umożliwia użytkownikowi przypomnienie hasła. Kontrolka po wpisaniu nazwy użytkownika wymaga podania odpowiedzi na sekretne pytanie. Jeśli odpowiedź jest prawidłowa, to wysyłana jest wiadomośd zawierająca nowe hasło. Rys. 5 Kontrolka PasswordRecovery Kontrolka LoginView Kontrolka LoginView jest kontenerem umożliwiającym wyświetlenie zawartości w zależności od tego, czy i kto jest zalogowany. Standardowo kontrolka rozpoznaje użytkownika anonimowego (<AnonymousTemplate>) i zalogowanego (<LoggedInTemplate>). Dla każdego ze stanów możliwe jest zdefiniowanie osobnej zawartości. Przykład: Strona 10-7

<asp:loginview ID="LoginView1" runat="server"> <LoggedInTemplate> Zawartość dla użytkownika zalogowanego </LoggedInTemplate> <AnonymousTemplate> Zawartość dla użytkownika anonimowego </AnonymousTemplate> </asp:loginview> Kontrolka LoginStatus Kontrolka LoginStatus umożliwia wyświetlenie konfigurowalnych odnośników w zależności od tego, czy użytkownik jest zalogowany (Logout) czy anonimowy (Login). Jeśli użytkownik nie jest zalogowany, to po kliknięciu na odnośnik Login zostaje przekierowany na stronę logowania zdefiniowaną w pliku Web.config w atrybucie loginurl sekcji <authentication>. Jeśli użytkownik jest zalogowany, to kliknięcie przycisku Logout zostaje wylogowany i przekierowany na stronę podaną w atrybucie LogoutPageUrl kontrolki. Przykład: <asp:loginstatus ID="LoginStatus1" runat="server" LogoutAction="Redirect" LogoutPageUrl="Default.aspx" /> Kontrolka LoginName Kontrolka LoginName wyświetla nazwę użytkownika. Jest wykorzystywana najczęściej do wyświetlenia komunikatu powitalnego dla użytkownika. Przykład: Witaj <asp:loginname ID="LN1" runat="server" />! Ukrywanie opcji menu W aplikacjach internetowych zachodzi często potrzeba ukrywania pewnych elementów nawigacyjnych przed użytkownikami, którzy nie mają odpowiednich uprawnieo, np. wybranych opcji menu. Aby tego dokonad, należy dodad atrybut roles do pliku Web.sitemap oraz w pliku Web.config ustawid właściwośd securitytrimmingenabled obiektu XmlSiteMapProvider na wartośd true. Należy pamiętad o tym, że ukrycie przed użytkownikiem odnośnika do strony nie zabrania mu do niej dostępu. Aby ograniczyd dostęp do folderu lub pliku, należy skonfigurowad sekcję <authorization> w pliku Web.config. Koniecznym zatem jest jawne określenie roli jednocześnie na poziomie uprawnieo do folderów (Web.config), jak i węzłów, z którymi nie jest skojarzony adres URL (Web.sitemap). Konfiguracja atrybutu roles w pliku Web.sitemap Konfiguracja atrybutu roles odbywa się poprzez dodanie go do sekcji <sitemapnode> i przypisanie do niego odpowiednich ról. Przykład: <sitemapnode title="administracja" description="zarządzaj witryną" roles="administrator">... </sitemapnode> Konfiguracja pliku Web.config W pliku Web.config w sekcji <system.web> należy dodad domyślnego dostawcę mapy serwisu XmlSiteMapProvider. Przykład: <sitemap defaultprovider="xmlsitemapprovider" enabled="true" > <providers> Strona 10-8

<add name="xmlsitemapprovider" description="domyślny dostawca mapy serwisu." type="system.web.xmlsitemapprovider" sitemapfile="web.sitemap" securitytrimmingenabled="true" /> </providers> </sitemap> Podsumowanie W tym rozdziale przedstawione zostały zagadnienia związane z uwierzytelnianiem użytkowników przy użyciu formularzy. Pokazano jak zabezpieczad dostęp do katalogów oraz opcji menu. Zaprezentowano kontrolki ułatwiające najczęstsze zadania przy zarządzaniu użytkownikami. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: umiesz skonfigurowad uwierzytelnianie za pomocą formularza umiesz określid dostęp do wybranego katalogu w aplikacji znasz kontrolki logowania i wiesz kiedy możesz je użyd potrafisz ukryd opcje menu przed różnymi grupami użytkowników Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów. Dodatkowe źródła informacji 1. Scott Mitchell, Examining ASP.NET 2.0's Membership, Roles, and Profile, http://aspnet.4guysfromrolla.com/articles/120705-1.aspx 12-częściowy artykuł poruszający praktyczne zagadnienia związane z zarządzaniem użytkownikami, rolami i profilami. Nie tylko dobrze przedstawiona teoria, ale przede wszystkim porady praktyczne i rozwiązania najczęściej spotykanych problemów. 2. Jakub Zagórski, Portal Internetowy w ASP.NET 2.0 z czym to się je?, http://www.codeguru.pl/article-560.aspx Artykuł dotyczący wielu aspektów związanych z tworzeniem portalu internetowego, z ciekawym opisem kwestii związanych z uwierzytelnieniem. 3. How To: Use Membership in ASP.NET 2.0, http://msdn.microsoft.com/enus/library/ms998347.aspx Obszerny artykuł zespołu patterns & practices przedstawiający kwestie wykorzystania uwierzytelniania w aplikacjach ASP.NET. 4. Stefan Schackow, Professional ASP.NET 2.0 Security, Membership, and Role Management, Wrox, 2006 Autor w książce poruszył wiele zagadnieo związanych z bezpieczeostwem, włącznie z zabezpieczaniem konfiguracji. Książka zawiera szczegółowe informacje dotyczące wszystkich najważniejszych obszarów bezpieczeostwa aplikacji ASP.NET. Strona 10-9

Laboratorium podstawowe Problem 1 (czas realizacji 20 min) Przygotowujesz aplikację internetową dla firmy Adventure Works, która planuje ekspansje na rynku internetowym w Polsce. Aktualnie aplikacja umożliwia już przeglądanie produktów oraz zawiera klika ciekawych elementów ułatwiających sprzedaż produktów. Kolejnym krokiem w rozwoju aplikacji jest implementacja uwierzytelniania jej użytkowników. W bazie dostarczonej do rozbudowy istnieją już informacje o użytkownikach, jednak ze względu na krótki czas implementacji aplikacji Twój zespół zaproponował wykorzystanie wbudowanych mechanizmów uwierzytelniania. Na szczęście klient się zgodził. Twój zespół sprawdził, że mechanizm ten potrzebuje bazy danych ASPNETDB. Niestety na serwerze wykupionym przez klienta nie ma możliwości dodania drugiej bazy danych. Musisz zatem zintegrowad bazę uwierzytelniania z istniejącą bazą danych oraz utworzyd dwóch użytkowników: admin i karol. Zadanie 1. Dodaj tabele i procedury z uwierzytelniające do istniejącej bazy danych 2. Dodaj informację o korzystaniu z innej bazy do pliku Web.config Tok postępowania Otwórz aplikację internetową przygotowaną w poprzednim module. W oknie Solution Explorer wybierz bazę danych AdventureWorksLT_Data.mdf znajdującą się w katalogu App_Data. Skopiuj ścieżkę dostępu znajdująca się w oknie Properties w polu FullPath. W systemie Windows XP/2003 wybierz Start -> Programy -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt. W linii poleceo wpisz nie kopiuj: aspnet_regsql -A all -C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" -d Dodaj na koocu wpisanego polecenia odstęp, a następnie wklej skopiowaną ścieżkę (kliknij prawym przyciskiem myszy, a następnie wybierz Wklej). Otwórz plik Web.config. Do sekcji <system.web> dodaj następujące informacje: <rolemanager enabled="true" defaultprovider="customizedroleprovider"> <providers> <add name="customizedroleprovider" type="system.web.security.sqlroleprovider" applicationname="adventureworks" connectionstringname="connectionstring" /> </providers> </rolemanager> <membership defaultprovider="customizedmembershipprovider"> <providers> <add name="customizedmembershipprovider" type="system.web.security.sqlmembershipprovider" applicationname="adventureworks" connectionstringname="connectionstring" /> </providers> </membership> Odnajdź sekcję <connectionstrings>, a następnie znacznik <add>. Skopiuj zawartośd właściwości name i wklej dwukrotnie w miejsce ConnectionString (wyróżnione miejsca w kodzie powyżej) w dodanej Strona 10-10

3. Uruchom narzędzie administracyjne uprzednio fragmencie konfiguracji. Uruchom ASP.NET Web Site Administration Tool, wybierając z menu główngo Websites -> ASP.NET Configuration. Zostanie uruchomiona przeglądarka i wyświetli się strona przedstawiona na Rys. 6. Rys. 6 ASP.NET Web Site Administration Tool 4. Dodaj użytkowników do aaplikacji Wybierz z menu zakładkę Security, a następnie kliknij odnośnik Use the security Setup Wizard to configure security step by step. Naciśnij przycisk Next. W kroku drugim (Select Access Method) określ metodę odstępu, zaznaczając opcję From the Internet. Naciśnij przycisk Next. W kroku trzecim (Data Store) naciśnij przycisk Next. W kroku czwartym (Define Roles) zaznacz opcję Enable roles for this Web site. Naciśnij przycisk Next. W polu tekstowym New Role Name wpisz: Administrator i wciśnij Add Role User i wciśnij Add Role Naciśnij przycisk Next. W kroku piątym (Add New Users) dodaj nowego użytkownika, podaj następujące dane: User Name: admin Password: Pa$$word Confirm Password: Pa$$word E-mail: {adres e-mail} Security Question: Ulubiony kolor Security Answer: zielony Naciśnij przycisk Create User. Dodaj kolejnego użytkownika: User Name: karol Password: Pa$$word Strona 10-11

5. Przypisz konta użytkowników do ról 6. Skonfiguruj konto pocztowe Confirm Password: Pa$$word E-mail: {adres e-mail} Security Question: Ulubiony kolor Security Answer: zielony Naciśnij przycisk Create User, a następnie przycisk Next. W kroku szóstym (Add New Access Rules), pozwalającym określid prawa do katalogów dla poszczególnych użytkowników lub grup, naciśnij przycisk Next. Krok siódmy informuje o zakooczeniu procesu konfiguracji zabezpieczeo. Naciśnij przycisk Finish. Na zakładce Security sprawdź, czy ilośd użytkowników (Users) wynosi 2 oraz ilośd ról (Roles) 2. W zakładce Security kliknij łącze Manage users. Przy użytkowniku admin kliknij łącze Edit Roles i przypisz obie role do użytkownika zaznaczając pola wyboru. Przy użytkowniku karol kliknij łącze Edit Roles i przypisz rolę User do użytkownika zaznaczając odpowiednie pole wyboru. Wybierz zakładkę Application, a następnie kliknij łącze Configure SMTP e mail settings. Skonfiguruj ustawienia serwera poczty wysyłającej, wpisując adres dowolnego serwera pocztowego, z jakiego na co dzieo korzystasz: Server Name: adres serwera poczty wysyłającej Server Port: port serwera poczty wysyłającej From: Informacja, która pojawi się w liście jako Od: (niektóre serwery blokują podawanie innych nazw, niż nazwa konta) Authentication: zaznacz Basic Sender's user name: nazwa użytkownika poczty Sender's password: hasło użytkownika Pamiętaj, że wszystkie dane konta, w tym hasło, zostaną umieszczone w postaci niezakodowanej w pliku Web.config. Problem 2 (czas realizacji 20 min) Po dodaniu i skonfigurowaniu użytkowników czas na dodanie do aplikacji możliwości logowania. Na stronie Zaloguj.aspx użytkownik ma mied możliwośd podania danych do uwierzytelnienia lub przekierowania na stronę Odzyskiwanie.aspx, na której będzie mógł odzyskad zapomniane hasło. Użytkownik ma mied również możliwośd utworzenia konta w systemie na stronie Zarejestruj.aspx. Na stronie ZmianaHasla.aspx użytkownik zalogowany ma mied możliwośd zmiany swojego dotychczasowego hasła. Zadanie 1. Dodaj wymagane strony do aplikacji Tok postępowania Wybierz Website -> Add New Item. Z listy Visual Studio installed templates wybierz Web Form. W polu Name wpisz Zarejestruj.aspx. Z listy Language wybierz Visual C#. Upewnij się, że opcja Place code in separate file jest zaznaczona. Upewnij się, że opcja Select master page jest zaznaczona. Kliknij OK. Podobnie dodaj stronę Zaloguj.aspx Strona 10-12

2. Dodaj kontrolkę LoginView 3. Dodaj kontrolkę LoginStatus 4. Określ stronę logowania 5. Dodaj kontrolkę logowania Na stronie wzorcowej SzablonStrony.master w obszarze div o ID="ObszarLogowania" umieśd kontrolkę LoginView. Kliknij Smart Tag i wybierz AnonymousTemplate. W kontrolce wpisz Zarejestruj, zaznacz wpisany tekst i naciśnij Ctrl+L lub wybierz Format->Convert to Hyperlink. Kliknij przycisk Browse i wybierz plik Zarejestruj.aspx. Naciśnij OK. Ponownie naciśnij OK. Kliknij Smart Tag i wybierz LoggedInTemplate. W kontrolce wpisz "Witaj ", a następnie dodaj kontrolkę LoginName. Na stronie wzorcowej SzablonStrony.master w obszarze div o ID="ObszarLogowania" za kontrolką LoginView wpisz symbol, a następnie umieśd kontrolkę LoginStatus. W oknie Properties: w polu CssClass wpisz LinkObszaruLogowania w polu LoginText wpisz Zaloguj w polu LogoutAction wpisz Redirect w polu LogoutPageUrl wpisz ~/Default.aspx w polu LogoutText wpisz Wyloguj Do pliku Style.css dodaj definicję klasy LinkObszaruLogowania:.LinkObszaruLogowania { color: #000033; } W pliku Web.config zamieo znacznik <authentication mode="forms" /> na: <authentication mode="forms"> <forms loginurl="~/zaloguj.aspx" /> </authentication> Na stronie Zaloguj.aspx w widoku Design napisz Zaloguj się w serwisie, a następnie umieśd kontrolkę Login. W oknie Properties: w polu FailureText wpisz Logowanie nie powiodło się. Upewnij się, że poprawnie wpisałeś nazwę użytkownika i hasło. w polu LoginButtonText wpisz Zaloguj w polu PasswordLabelText wpisz Hasło: w polu PasswordRequiredErrorMessage wpisz Wprowadź hasło. w polu RememberMeText wpisz Zapamiętaj mnie w polu UserNameLabelText wpisz Login: w polu UserNameRequiredErrorMessage wpisz Wprowadź nazwę. Do strony w widoku Source dodaj: <a href="odzyskiwanie.aspx">zapomniałem hasła</a> Zapisz zmiany na stronie. 6. Dodaj kontrolkę tworzenia użytkownika 7. Dodaj kontrolkę odzyskiwania hasła Na stronie Zarejestruj.aspx w widoku Design umieśd kontrolkę CreateUserWizard. W oknie Properties zmieo właściwości tak, aby w kontrolce były wyświetlane komunikaty w języku polskim. Zapisz zmiany na stronie. Do aplikacji dodaj stronę Odzyskiwanie.aspx opartą o szablon strony SzablonStrony.master. W widoku Design umieśd kontrolkę PasswordRecovery. W oknie Properties zmieo właściwości tak, aby w kontrolce były wyświetlane komunikaty w języku polskim. Zapisz zmiany na stronie. Strona 10-13

8. Dodaj kontrolkę zmiany hasła 9. Sprawdź działanie aplikacji Do projektu dodaj katalog Zarzadzanie. Do katalogu dodaj stronę ZmianaHasla.aspx opartą na szablonie strony SzablonStrony.master. Na stronie napisz Zmieo hasło i dodaj kontrolkę ChangePassword. W oknie Properties zmieo właściwości tak, aby w kontrolce były wyświetlane komunikaty w języku polskim. Sprawdź poprawnośd działania aplikacji. Zaloguj się korzystając z użytkownika karol. Dodaj nowego użytkownika i sprawdź możliwośd zalogowania na podane dane. Problem 3 (czas realizacji 5 min) Ostatnim elementem związanym z zabezpieczeniami jest ukrycie opcji menu oraz zabezpieczenie katalogu przed dostępem niepowołanych użytkowników. Menu Zarządzanie powinno byd widoczne tylko dla użytkowników znajdujących się w roli User i Administrator. Pozostali użytkownicy nie powinni mied dostępu do katalogu. Zadanie 1. Uzupełnij brakujące strony w pliku Web. sitemap 2. Dodaj atrybut roles do pliku Web.sitemap 3. Określ dostawcę informacji o ścieżce nawigacyjnej Tok postępowania Otwórz plik Web.sitemap. Po sekcji wyświetlającej menu dla produktów dodaj: <sitemapnode title="zarządzanie" description="zarządzaj"> <sitemapnode url="zarzadzanie/zmianahasla.aspx" title="zmiana hasła" description="zmień hasło" /> </sitemapnode> Dodaj do znacznika sitemapnode atrybut roles="*", gdy menu ma byd prezentowane dla wszystkich użytkowników strony (nawet anonimowych). Dodaj do znacznika sitemapnode atrybut roles="x", gdzie X jest nazwą roli (możliwe podanie wielu ról oddzielonych przecinkiem np. Administrator, User), gdy menu ma byd prezentowane dla konkretnych użytkowników przypisanych do roli X. Ustal odpowiednie prawa do menu. Dla węzła sitemapnode o właściwości: title="produkty" ustal roles="*" title="zarządzanie" ustal roles="user,administrator" title="ankiety" ustal roles="*" title="informacje" ustal roles="*" Do pliku Web.config do znacznika <system.web> dodaj następujący fragment: <sitemap defaultprovider="xmlsitemapprovider" enabled="true" > <providers> <add name="xmlsitemapprovider" description="domyślny dostawca mapy serwisu." type="system.web.xmlsitemapprovider" sitemapfile="web.sitemap" securitytrimmingenabled="true" /> </providers> </sitemap> Strona 10-14

4. Sprawdź działanie aplikacji 5. Zabezpiecz katalog Zarzadzanie przed niepowołanym dostępem 6. Sprawdź działanie aplikacji Sprawdź poprawnośd działania aplikacji. Sprawdź, które opcje menu są prezentowane. Zaloguj się korzystając z użytkownika admin. Sprawdź, które opcje menu są teraz prezentowane Jeśli jesteś zalogowany, wyloguj się z aplikacji. Sprawdź, czy możesz wywoład stronę Zarzadzanie/ZmianaHasla.aspx. Dlaczego strona została wyświetlona? Otwórz plik Web.config. Do sekcji configuration dodaj: <location path="zarzadzanie"> <system.web> <authorization> <allow roles="user,administrator" /> <deny users="*"/> </authorization> </system.web> </location> Sprawdź poprawnośd działania aplikacji. Jeśli jesteś zalogowany, wyloguj się z aplikacji. Sprawdź, czy możesz wywoład stronę Zarzadzanie/ZmianaHasla.aspx. Co się teraz stało? Dlaczego? Strona 10-15