Důležité informace o zabezpečení pro LightSwitch
U většiny podnikových aplikací existují požadavky na zabezpečení.Můžete například chtít vymezit, kteří zaměstnanci budou mít přístup do aplikace nebo k obrazovkám v aplikaci a kteří k zobrazení určitých dat nebo jejich aktualizaci.LightSwitch poskytuje model integrovaného ověřování a autorizace, který může pomoci implementovat zabezpečení v aplikaci.
Ověřování a autorizace
Ověřování je mechanismus, který slouží k ověření identity uživatele.Například při přihlášení do systému Windows slouží vaše uživatelské jméno a heslo k ověření toho, že se skutečně jedná o vaši osobu.Autorizace je mechanismus, který definuje činnosti, které můžete na nemůžete provádět.Například zaměstnanec může mít možnost prohlížet vlastní mzdové informace, ale s největší pravděpodobností nebude oprávněn si sám zvýšit plat.
V LightSwitch je ověřování zpracováno pomocí přihlašovací obrazovky, která slouží k identifikaci uživatele.Po ověření uživatele určují role a oprávnění, co je daný uživatel oprávněn v aplikaci dělat.
Povolení ověřování
Ověřování v LightSwitch je vy výchozím nastavení zakázáno. Povolíte ho na kartě Řízení přístupu v Návrháři aplikací.Podporováno je ověřování v systému Windows i ověřování pomocí formulářů.Ověřování systému Windows používá k identifikaci uživatele přihlašovací informace uživatele systému Windows.S ověřováním pomocí formulářů vytvoří správce aplikace identity a hesla uživatele.
Pokud zvolíte ověřování systému Windows, můžete také vybrat, zda budou mít k aplikaci přístup určití uživatelé nebo všichni uživatelé systému Windows.Pokud vyberete všechny uživatele, bude moci každý uživatel, který má platné ID přihlášení systému Windows, získat přístup k aplikaci, ale tito uživatelé budou mít pouze minimální oprávnění.I nadále můžete podle potřeby přiřazovat jednotlivým uživatelům role a oprávnění.
Oprávnění, uživatelé a role
Autorizace se v LightSwitch provádí na základě definice oprávnění, uživatelů a rolí.Oprávnění vytváří vývojář na kartě Řízení přístupu v Návrháři aplikací a účinek těchto oprávnění určuje napsání kódu.Můžete například vytvořit oprávnění ViewSales, které bude sloužit k autorizaci uživatelů pro zobrazení obrazovky prodeje.V metodě CanView pro obrazovku byste napsali kód, který umožňuje obrazovky zobrazit jen tehdy, když má aktuální uživatel přiděleno oprávnění k jejich zobrazení.Vedle nastavení oprávnění k zobrazení obrazovky můžete vytvořit také oprávnění omezující přístup k jednotlivým ovládacím prvkům na obrazovce, k datovým entitám nebo polím entit, k dotazům a dalším položkám.
Role vytváří správce aplikace po nasazení aplikace.Role obsahuje jedno nebo více oprávnění.Správce může například definovat roli Prodej a přiřadit k této roli oprávnění ViewSales.Správce aplikace také přidá uživatele a přiřadí role uživatelům.Pokud například Petr pracuje v oddělení prodeje, může ho správce přidáním ověřovacích informací přidat jako uživatele a pak ho přiřadit k roli Prodej.Při spuštění aplikace vyhodnotí kód informace uživatele Petr, bude zjištěno, že je členem role Prodej, a zobrazí se položka nabídky pro zobrazení obrazovky Prodej.
Každá aplikace má výchozí oprávnění, oprávnění SecurityAdministration.Toto oprávnění umožňuje přístup k obrazovkám pro správu Uživatelé a Role, které používá správce aplikace.Při prvním publikování aplikace můžete zadat ověřovací informace pro osobu, která bude správcem výchozí aplikace.Pokud tato osoba spustí aplikaci poprvé, bude moci zobrazit obrazovky Uživatelé a Role a definovat uživatele a role.
Testování autorizace
Při testování aplikace můžete chtít zajistit, že všechna oprávnění, která jste definovali, budou fungovat očekávaným způsobem.Provedete to tak, že povolíte povolením oprávnění pro ladění na kartě Řízení přístupu v Návrháři aplikací.Pokud jste definovali například definovali oprávnění ViewSales, můžete pro toto oprávnění zaškrtnout políčko Uděleno pro ladění.Při ladění aplikace můžete ověřit, že můžete zobrazit obrazovku Prodej – používáte ji jako uživatel, který má oprávnění ViewSales.Pro emulaci oprávnění, která lze přiřadit k dané roli, můžete nastavit libovolnou kombinaci oprávnění.
[!POZNÁMKA]
Pokud povolíte oprávnění pro ladění SecurityAdministration, můžete během ladění zobrazit obrazovky pro správu Uživatelé a Role.I když můžete na těchto obrazovkách zadávat uživatele a role, nebudou uživatelé ani role nasazeni s aplikací a nelze je použít pro ladění oprávnění.
Zabezpečená připojení
U třívrstvých aplikacích klienta založených na LightSwitch a umístěných na serveru s Internetovou informační službou (IIS) je pro komunikaci mezi aplikací a serverem použit protokol HTTP namísto více zabezpečeného protokolu HTTPS.Tento požadavek může aplikaci vystavit útočníkům.Šifrování protokolem SSL pomáhá chránit důvěrné a osobní informace posílané mezi aplikací klienta a serverem.Je-li protokol SSL povolen, vzdálená aplikace klienta přistupuje k serveru pomocí adresy URL začínající https://.Doporučujeme nakonfigurovat protokol SSL na všech webech, které hostují aplikaci založenou na LightSwitch.Další informace naleznete v tématu s informacemi o konfiguraci protokolu SSL (Secure Sockets Layer) ve službě IIS 7.
Povolení protokolu SSL
V řádku nabídek zvolte možnost Sestavení a Publikovat.
V Průvodci publikováním aplikace, zvolte kartu Nastavení zabezpečení.
V oddílu Požadovat zabezpečené připojení (HTTPS) klikněte na tlačítko Zapnuto.
[!POZNÁMKA]
Je-li toto nastavení povoleno, musí být web správně nakonfigurován pro použití protokolu HTTPS.
U aplikací se třemi vrstvami, které používají pro vrstvu dat SQL Server, je potenciálně ohrožena také komunikace mezi službou IIS a databází.Doporučujeme nakonfigurovat protokol SSL pro všechny databáze, ke kterým je přistupováno aplikací založenou na LightSwitch.Další informace naleznete v tématu s informacemi o šifrování připojení k serveru SQL Server.
Zabezpečení a správa verzí
Při práci s projektem LightSwitch, kterému jsou spravovány verze, připojovací řetězec v souboru web.config může obsahovat uživatelské jméno a heslo posledního vývojáře projektu.Tyto informace by pak byly k dispozici dalšímu vývojáři, který si rezervuje projekt.
Tento problém se nevztahuje na publikované aplikace; informace připojovacího řetězce z Průvodce publikováním nejsou správou verzí uloženy.Neoprávněným uživatelům lze zabránit v přístupu k produkčním datům použitím testovací databáze namísto produkční databáze.
Další důležité informace o zabezpečení
Kromě ověřování, existují další aspekty zabezpečení, které je třeba zvážit.I v případě, že aplikace nezpracovává citlivá obchodní data, mohou být vyzrazením ohroženy další informace, například hesla.
Při psaní kódu pro přístup na server je nutné vzít v úvahu také zabezpečení.Můžete například napsat kód dotazu pro filtrování dat zaměstnanců tak, aby mohli zaměstnanci lze zobrazit pouze vlastní data:
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;
}
Zatímco tato možnost funguje k zobrazení dat, mohla by se, když se uživatel pokusí aktualizovat nebo odstranit data a dojde k výjimce souběžnosti, v informacích o chybě vrácených ze serveru zobrazit data jiných zaměstnanců.Chcete-li se této situaci vyhnout, napište další kód v rámci metod Aktualizace a Odstranění, abyste měli jistotu, že budou moci zaměstnanci vidět jenom svoje vlastní data:
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.");
}
Další informace o postupech zabezpečeného kódování získáte v tématu Vytváření zabezpečených aplikací.
Viz také
Úkoly
Ověřování a autorizace v aplikacích LightSwitch