290 likes | 433 Views
User Account Management. Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont. Probléma. Azonosítani kell a felhasználókat Hozzá kell rendelni a jogokat. Authentikáció és Authorizáció. Hitelesítés (Authentikáció) : Felhasználó kilétének megállapítása
E N D
User Account Management Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont
Probléma • Azonosítani kell a felhasználókat • Hozzá kell rendelni a jogokat
Authentikáció és Authorizáció • Hitelesítés (Authentikáció) : • Felhasználó kilétének megállapítása • Azonosságának ellenőrzése • Hozzáférés engedélyezése (Authorizáció): • Az azonosított felhasználó hozzáférésének beállítása • Hozzáférések megadása felhasználónként, szerepkörönként
ASP.NET hitelesítési módjai • Windows-alapú • Windows operációs rendszeren és az IIS-en alapszik • Az IIS végzi a hitelesítést • Form-alapú • A nem hitelesített felhasználók egy Bejelentkező oldalra vannak átirányítva • Hitelesítés után egyauthentikációs cookie jön létre
Hitelesítések összehasonlítása • Windows-alapú • Meglévő Windows infrastruktúrát használja • Korlátozza a bizalmas adatokhoz való hozzáférést DE: • A legtöbb Internetes alkalmazás esetén nem használható • Form-alapú • Internetes alkalmazások esetén jól használható • Mindenféle felhasználó esetén alkalmazható DE: • Cookie-thasznál, vagy…
Windows-alapú hitelesítés • Az IIS-en állítsuk be ezek egyikét: • Basic, Digest, Integrated Windows security • Web.config-ban: <system.web> <authentication mode="Windows" /> </system.web> • Állítsuk be az authorizációt is. • Ha egy felhasználó el akarja érni a web alkalmazásunkat, az IIS előbb hitelesítési információt kér.
Hitelesítési információ lekérdezése Authentikáció után lekérdezhetők a bejelentkezett felhasználó hitelesítési információi: User.Identity.Name User.Identity.AuthenticationType User.Identity.IsAuthenticated
Form-alapúhitelesítés 1 2 IIS ASP.NET Forms authentikáció Hitelesített Kliens lekér egy oldalt Még nem authentikált Authorizált Username 6 4 Hozzáférés megtagadva Someone Password Bejelentkező oldal (felhasználó kitölti) ******* Submit Nem hitelesített 3 Hitelesített Authorizált Elérhető a levédett oldal 7 Authentikációs cookie 5
Form-alapúhitelesítés Az IIS-en állítsuk be az Anonymousauthentikációt Web.config-ban: <authentication mode="Forms" > <forms name=“MainLogon" loginUrl="login.aspx„ name=„Cookieneve” cookieless=„…” defaultUrl=„…” timeout=„30” /> </authentication> Állítsuk be az authorizációt is. Készítsünk egy Bejelentkező oldalt
Authorizáció File Authorizáció Access Control List (Windows saját authorizációs mechanizmusa) CsakWindows Authentikációval használható URL Authorizáció Bármely hitelesítési móddal használható Web.config-ban: <authorization> <allow users=„Tamas"/> <allow roles="Admins"/> <deny users=„Feri"/> <deny users="?"/></authorization> Anonymous felhasználó
Egyes oldalak (mappák) levédése URL Authorizáció az egyes oldalakra Annak a mappának a web.config-jában, amelyikben az adott oldal van: <configuration> …<location path=„VedettOldal.aspx"> <system.web> <authorization> <allow users=„Tamas"/> <deny users="*"/> </authorization> </system.web></location>…</configuration> Összes felhasználó
Bejelentkező oldal létrehozása ASP.NET Login vezérlők használatával De hol és hogyan tároljuk a hitelesítési adatokat …?
Megoldás: ASP.NET Membership Beépített módszer a felhasználók hitelesítésének elvégzésére és hitelesítési adatainak tárolására
ASP.NET Membershipkomponensei User account létrehozása és törlése User account-oktárolása SQL Server, Microsoft Office Access, vagyegyéb Authentikáció A Loginvezérlőkkel könnyedén összerakható egy bejelentkező oldal. Jelszó menedzsment Lehetővé teszi a jelszó beállítását, elfelejtett jelszó lekérdezését, stb.
Membershipkonfiguráció <membership defaultProvider=SqlProvider" userIsOnlineTimeWindow="15"> <providers> <clear /> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MySqlConnection" applicationName="MyApplication" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Hashed" /> </providers> </membership>
Membership Osztály User Account-ok menedzselését végzi. Főbb metódusai: CreateUser DeleteUser UpdateUser ValidateUser Authentikáció végrehajtása ChangePassword
Membershiposztály használata I. Új felhasználó felvétele: MembershipUser userNew = Membership.CreateUser("Joe", "Pa$$w0rd", "joe@contoso.com"); if (userNew == null) { lblMessage.Text = „User sikeresen létrehozva."; } else { lblMessage.Text = "User létrehozása sikertelen"; }
Membershiposztály használata II. Jelszó megváltoztatása: MembershipUser userCurrent = Membership.GetUser(); string sOldPassword = txtOldPassword.Text; string sNewPassword = txtNewPassword.Text; if (userCurrent.ChangePassword(sOldPassword, sNewPassword)){ lblMessage.Text = "Jelszó sikeresen megváltoztatva."; } else { lblMessage.Text = "Jelszó megváltoztatása nem sikerült."; }
Login vezérlők I. Login: LoginName: a bejelentkezett felhasználó nevét mutatja. LoginStatus:
Login vezérlők II. CreateUserWizard: AContinueButtonClick eseményt kell lekezelni: protected void CreateUserWizard1_ContinueButtonClick( object sender, EventArgs e) { Response.Redirect("Members/Default.aspx"); }
Login vezérlők III. ChangePassword: PasswordRecovery: LoginView: Bejelentkezett és anonim felhasználók számára különböző tartalom megjelenítésére.
LoginViewvezérlő <asp:LoginView ID="LoginView1" Runat="server"> <LoggedInTemplate> Welcome, <asp:LoginName ID="LogName1" Runat="server"/><br/> <asp:HyperLink ID="HypLink1" Runat="server" NavigateUrl="~/MemberPages/ChangePassword.aspx"> Change Password </asp:HyperLink> </LoggedInTemplate> <AnonymousTemplate> Click Login to sign in.<br /> <asp:HyperLink ID="HypLink2" Runat="server" NavigateUrl="~/Register.aspx"> Register </asp:HyperLink> </AnonymousTemplate> </asp:LoginView>
Role menedzsment Be kell állítani a web.config-ban: <roleManagercacheRolesInCookie="true" enabled="true" defaultProvider="SqlProvider"> <providers> <add name="SqlProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="RolesConnection" applicationName="MyApplication" /> </providers> </roleManager>
Role létrehozása és feltöltése Módjai: ASP.NET Web Site Administration Tool Programkóddal a Roles osztály használatával if (!Roles.RoleExists("Menedzserek")) Roles.CreateRole("Menedzserek"); Roles.AddUserToRole("Kiss Mari", "Menedzserek"); Szerepkör ellenőrzése: if (!User.IsInRole("Menedzserek")) btnDownloadFile.Visible = false;
Alkalmazásunk tervezése Form-alapú hitelesítés AspNetSqlProvider Login.aspx, Register.aspx létrehozása Login, LoginView, LoginStatus, LoginName, CreateUserWizardkontrolok használata