Zagadnienia zabezpieczeń dotyczące LightSwitch
Większość aplikacji biznesowych posiada wymagania zabezpieczeń.Na przykład można wprowadzić ograniczenie, którzy pracownicy mają dostęp do aplikacji lub ekranów w aplikacji, oraz możliwości przeglądania lub aktualizowania niektórych danych przez użytkowników.LightSwitch zapewnia wbudowany model uwierzytelniania i autoryzacji, który może pomóc zaimplementować zabezpieczenia w aplikacji.
Uwierzytelnianie i autoryzacja
Uwierzytelnianie jest mechanizmem pozwalającym sprawdzić, kim jest użytkownik.Na przykład podczas logowania do systemu Windows, nazwa użytkownika i hasło uwierzytelniają twoją tożsamość.Autoryzacja jest mechanizmem definiowania tego, co można - a czego nie można robić.Na przykład pracownik może przeglądać swoje własne informacje na temat listy płac, ale najprawdopodobniej nie będzie upoważniony do udzielenia sobie podwyżki płac.
W LightSwitch uwierzytelnianie jest obsługiwane przez ekran logowania, który jest używany do identyfikacji użytkownika.Po uwierzytelnieniu użytkownika role i uprawnienia określają, co użytkownik może robić w aplikacji.
Włączanie uwierzytelniania
Uwierzytelnianie w LightSwitch jest domyślnie wyłączone; włącza się je na karcie Kontrola dostępu projektanta aplikacji.Obsługiwane jest uwierzytelnianie systemu Windows jak i uwierzytelnianie za pomocą formularzy.Uwierzytelnianie systemu Windows używa informacji logowania użytkownika systemu Windows do identyfikacji użytkownika.Za pomocą uwierzytelniania formularzy administrator aplikacji tworzy tożsamości użytkowników i hasła.
Wybierając uwierzytelnianie systemu Windows, można także określić, czy określeni użytkownicy lub wszyscy użytkownicy systemu Windows mają dostęp do aplikacji.Po wybraniu wszystkich użytkowników, każdy użytkownik, który ma prawidłowy identyfikator logowania systemu Windows, będzie mógł uzyskać dostęp do aplikacji, ale będzie miał tylko minimalne uprawnienia.Można nadal przypisać role i uprawnienia do użytkowników stosownie do indywidualnych potrzeb.
Uprawnienia, użytkownicy i role
Autoryzacji w LightSwitch dokonuje się, definiując uprawnienia, użytkowników i role.Uprawnienia są tworzone przez dewelopera na karcie Kontrola dostępu projektanta aplikacji a wpływ tych uprawnień jest projektowany poprzez pisanie kodu.Na przykład można utworzyć uprawnienia ViewSales, aby zezwolić użytkownikom na wyświetlanie ekranu sprzedaży.W metodzie CanView dla ekranu, piszesz kod, który zezwala na wyświetlanie ekranu, jeśli bieżący użytkownik ma uprawnienia do oglądania go.Oprócz uprawnień do przeglądania ekranów, można również utworzyć uprawnienia, aby ograniczyć dostęp do poszczególnych formantów na ekranie, jednostek danych lub pól jednostki, zapytań itd.
Role są tworzone przez administratora aplikacji po wdrożeniu aplikacji.Rola zawiera jedno lub więcej uprawnień.Na przykład administrator może zdefiniować rolę sprzedaży i przypisać uprawnienie ViewSales do tej roli.Administrator aplikacji dodaje również użytkowników i przypisuje im role.Na przykład jeśli Bob jest w dziale sprzedaży, administrator może dodać go jako użytkownika, dodając jego informacje uwierzytelniania i przypisując mu rolę sprzedaży.Po uruchomieniu aplikacji kod oceni informacje dotyczące użytkownika Bob, sprawdzi, czy jest on członkiem roli sprzedaży, i wyświetli element menu, aby wyświetlić ekran sprzedaży.
Każda aplikacja ma uprawnienie domyślne, uprawnienie SecurityAdministration.To uprawnienie udziela dostępu do ekranów administracyjnych Użytkownicy i Role, które są używane przez administratora aplikacji.Podczas publikowania aplikacji po raz pierwszy, można podać informacje uwierzytelniania dla osoby, która będzie domyślnym administratorem aplikacji.Kiedy osoba po raz pierwszy uruchomi aplikację, będzie mogła zobaczyć ekrany Użytkownicy i Role oraz zdefiniować użytkowników i role.
Testowanie autoryzacji
Podczas testowania aplikacji należy upewnić się, że wszystkie zdefiniowane uprawnienia działają zgodnie z oczekiwaniami.Można to zrobić poprzez aktywowanie uprawnień debugowania na karcie Kontrola dostępu projektanta aplikacji.Na przykład, jeśli zdefiniowano uprawnienia ViewSales, można zaznaczyć pole wyboru Przydzielone do debugowania dla tego uprawnienia.Podczas debugowania aplikacji można sprawdzić, czy można wyświetlić ekran sprzedaży - pracujesz jako użytkownik mający uprawnienie ViewSales.Można ustawić dowolną kombinację uprawnień do emulowania uprawnień przypisanych do danej roli.
[!UWAGA]
Po włączeniu uprawnienia SecurityAdministration dla debugowania, można wyświetlić administracyjne ekrany Użytkownicy i Role podczas debugowania.O ile można wprowadzić użytkowników i role na tych ekranach, użytkownicy i role nie będą wdrażane w aplikacji i nie można używać ich do uprawnień debugowania.
Bezpieczne połączenia
Dla trójwarstwowych klientów aplikacji, które są oparte na LightSwitch i znajdującej się na serwerze z systemem Internet Information Services (IIS), komunikacja między aplikacją i serwerem używa protokołu HTTP zamiast protokołu HTTPS, który jest bardziej bezpieczny.Wymaganie to może pozostawić aplikację narażoną na ataki.Szyfrowanie Secure Sockets Layer (SSL) pomaga chronić informacje osobiste lub poufne wysyłane między aplikacją klienta i serwera.Gdy włączony jest protokół SSL, zdalne aplikacje klienckie uzyskują dostęp do serwera przy użyciu adresów URL, które rozpoczynają się od https://.Zaleca się konfigurowanie protokołu SSL dla dowolnej witryny, który obsługuje aplikację opartą na LightSwitch.Aby uzyskać więcej informacji, zobacz Konfigurowanie Secure Sockets Layer w IIS 7.
Aby włączyć protokół SSL
Na pasku menu wybierz Kompilacja, Publikuj.
W Kreatorze publikowania aplikacji, wybierz kartę Ustawienia zabezpieczeń.
W sekcji Wymaga bezpiecznego połączenia (HTTPS), wybierz opcję Włączone.
[!UWAGA]
Gdy to ustawienie jest włączone, witryna sieci web musi być poprawnie skonfigurowana, aby używać protokołu HTTPS.
W przypadku trójwarstwowej aplikacji, która używa dla warstwy danych programu SQL Server, komunikacja między programem IIS i bazą danych jest również zagrożona.Zalecane jest konfigurowanie protokołu SSL dla każdej bazy danych, która jest dostępna przez aplikację opartą na LightSwitch.Aby uzyskać więcej informacji, zobacz Szyfrowania połączeń z serwerem SQL Server.
Bezpieczeństwo i kontrola wersji
Podczas pracy z projektem LightSwitch, który jest pod kontrolą wersji, parametry połączenia w pliku web.config mogą zawierać nazwę użytkownika i hasło dla ostatniego dewelopera projektu.Informacja ta będzie wówczas dostępna dla następnego dewelopera, który wyewidencjonuje projekt.
Ten problem nie dotyczy aplikacji opublikowanych; w kontroli wersji nie są zapisywane informacje o parametrach połączenia z Kreatora publikowania.Za pomocą testowej bazy danych zamiast produkcyjnej bazy danych w czasie projektowania, można uniemożliwić użytkownikom nieautoryzowanym dostęp do danych produkcyjnych.
Dodatkowe zagadnienia dotyczące zabezpieczeń
Oprócz uwierzytelniania istnieją inne aspekty bezpieczeństwa, które należy rozważyć.Nawet jeśli aplikacja nie dotyczy poufnych danych, inne informacje, takie jak hasła mogą być narażone.
Zabezpieczenia są również ważne podczas pisania kodu, który uzyskuje dostęp do serwera.Można na przykład napisać kod zapytania w celu filtrowania danych pracownika, tak aby pracownicy mogli zobaczyć tylko swoje własne dane:
Private Partial Sub Employees_All_PreprocessQuery(ByRef query As IQueryable(Of Application43.Employee))
query = From item In query Where item.EmpName = Me.Application.User.Nameitem
End Sub
partial void Employees_All_PreprocessQuery(ref IQueryable<Application43.Employee> query)
{
query = from item in query where item.EmpName == this.Application.User.Name select item;
}
O ile działa to w przypadku wyświetlania danych, jeśli użytkownik próbuje zaktualizować lub usunąć dane i wystąpi wyjątek współbieżności, dane innych pracowników mogą zostać narażone w informacjach o błędzie zwracanych z serwera.Aby tego uniknąć, należy napisać dodatkowy kod w metodach aktualizowania i usuwania, aby upewnić się, że pracownik może wyświetlić tylko własne dane:
Dim user As String = Me.Application.User.Name
If Me.DataWorkspace.ApplicationData.Employees.Where(Function(e) e.Id = entity.Id AndAlso e.EmpName = user).Execute().Count() = 0 Then
Throw New DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.")
End If
string user = this.Application.User.Name;
if (this.DataWorkspace.ApplicationData.Employees.Where(e => e.Id == entity.Id && e.EmpName == user).Execute().Count() == 0)
{
throw new DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.");
}
Aby dowiedzieć się więcej na temat ogólnych bezpiecznych praktyk kodowania, zobacz Tworzenie bezpiecznych aplikacji.
Zobacz też
Zadania
Uwierzytelnianie i autoryzacja w programie LightSwitch