110 likes | 282 Views
Sikkerhed. Sikkerhed i ASP.NET Autentifikation (Authentication) Autorisation (Authorization). Overblik. Sikkerhed i ASP.NET kontrolleres via .config-filen(filerne) Standard autentifikation er sat til Windows Standard autorisation er sat til at tillade anonymous (alle) tilgang.
E N D
Sikkerhed • Sikkerhed i ASP.NET • Autentifikation (Authentication) • Autorisation (Authorization)
Overblik • Sikkerhed i ASP.NET kontrolleres via .config-filen(filerne) • Standard autentifikation er sat til Windows • Standard autorisation er sat til at tillade anonymous (alle) tilgang machine.config <system.web> <authenticationmode="Windows"> </authentication> <authorization> <allowusers="*"/> </authorization> </system.web>
Autentifikationskontrol • Der gives 4 muligheder for autentifikation: • Windows: autentificerer brugeren vha. de lokale Windows-konti, Windows prompter brugeren • Forms: autentificerer brugeren via et egettilvirket sikkerheds- system; der skal bruges Login-side, osv … • Passport: autentificerer brugeren via Microsoft's Passport system, kræver installation og opsætning af Passport-system • None <system.web> <authenticationmode="Windows"> </authentication> </system.web>
Sikkerheds-webkontroller • ASP.NET 2.0 definerer en række nye sikkerhedsrelaterede kontroller: • <asp:Login ... /> • login autentifikations formular • <asp:LoginView ... /> • skiftende udseende baseret på identitet • <asp:PasswordRecovery ... /> • kodeordsgendannelses-formular (kun uhashede kodeord) • <asp:LoginStatus ... /> • skiftende udseende alt efter hvordan brugeren er autentificeret • <asp:LoginName ... /> • viser brugernavn for autentificerede brugere • <asp:CreateUserWizard ... /> • oprettelsesformular til nye brugere • <asp:ChangePassword ... /> • formular til ændring af kodeord
Eksempel • "Login/Logout"-link giver mulighed for at logge ind – eller viser hvem der er logget ind: <%@ Page language=C# %> <html> <body> <asp:LoginStatusID="LoginStatus1"runat="server"/> : <asp:LoginNameID="LoginName1"runat="server"/> </body> </html> Når brugeren ikke er logget ind Når brugeren er logget ind
Rækkefølgen er vigtig! ASP.NET anvender top-down, første match bestemmer tilgangen Autorisationskontrol • Autorisation understøtter <allow> og <deny> underelementer • "?" repræsenterer anonyme brugere • "*" repræsenterer alle brugere • ellers specificeres en kommasepareret liste af brugere • Eksempel: • nægt (deny) anonym tilgang • tillad (allow) tilgang til "per" og "lis" • nægt (deny) tilgat til alle andre Window-brugere <configuration> <system.web> <authorization> <denyusers="?"/> <allowusers="MitDomæne\per, MitDomæne\lis"/> <denyusers="*"/> </authorization> </system.web> </configuration>
Eksempel • Opret et Forms-baseret sikkerhedssystem < 5 minutter … • angiv Forms-autentifikation i web.config, nægt anonym tilgang ("?") • tilføj en ny WebForm – Login.aspx • træk og slip en Login-kontrol på formen • tilføj brugere via Visual Studio's "web app admin"-værktøj: • Website menu > ASP.NET Configuration • Security fanen … • Opretter og befolker automatisk SQL Server 2005 databasen in App_Data!
Brugerhåndtering • Der gives sikkerhedsrelaterede kontroller, som håndterer generel funktionalitet: • Oprettelse af bruger • Ændring af kodeord • Gendannelse af kodeord • Træk og slip disse kontroller på en formular, og det burde virke … • kommunikerer automatisk med den underliggende SQL Server 2005 database …
Eksempel • CreateUserWizard-kontrol • opret en side, træk kontrollen ind på siden, og lav et link til den fra Login-siden … <asp:CreateUserWizardID="CreateUserWizard1" runat="server"> <WizardSteps> <asp:CreateUserWizardStepID="cuws1" runat="server" /> <asp:CompleteWizardStepID="cpuws1" runat="server" /> </WizardSteps> </asp:CreateUserWizard>
Finmasket tilgang • Forskellige brugere kan have forskellige grader af tilgang … • anvend <location>-elementet til at kontrollere tilgang til filer og mapper <configuration> . . . <locationpath="admin"> <system.web> <authorization> <allowusers="knud"/> <denyusers="*"/> </authorization> </system.web> </location> <locationpath="Salaries.aspx"> <system.web> <authorization> <allowusers="lis,per,knud"/> <denyusers="*"/> </authorization> </system.web> </location> </configuration> kun "knud" har tilgang til "admin"- mappen "lis", "knud" og "per" kan tilgå Salaries.asp-siden
Rollebaseret sikkerhed • ASP.NET understøtter brugen af roller, dvs. "brugergrupper" • Definér roller via Website menu > ASP.NET Configuration • Håndtér roller via Website menu > ASP.NET Configuration • Definér nu autorisation ved brug af roller … <configuration> . . . <locationpath="admin"> <system.web> <authorization> <allowroles='Administrators'/> <denyusers="*"/> </authorization> </system.web> </location> Bemærk brugen af apostroffer!