User Account Management Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont
Jan 06, 2016
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 egy authentiká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-t használ, vagy…
IIS Hitelesítési Beállításai Biztonsági
szint Mechanizmus
Anonymous Nincs Nem authentikál
BasicAlacsony (Közepes azSSL esetén)
A kliens felhasználói nevet és jelszót küld sima szövegként
SSL használható A legtöbb böngésző támogatja
Digest Közepes Kódolt hashként küldi az infót Internet Explorer 5, 6, 7 vagy 8 Active Directory szükséges
Integrated Windows Magas
NTLM vagy Kerberos Általában intranetre és nem Internetre Legtöbb tűzfalon nem megy át
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
IIS demó
Form-alapú hitelesítés
Kliens lekér egy oldalt
Authorizált
ASP.NET Forms authentikáció
Még nem authentikált
Hitelesített
Bejelentkező oldal(felhasználó kitölti)
Hitelesített
Authentikációs cookie
Authorizált
Nem hitelesített
Hozzáférés megtagadva
IIS
Username
Password
Someone
*******
SubmitSubmit
Elérhető a levédett oldal
4
21
6
3
7
5
Form-alapú hitelesítés
• Az IIS-en állítsuk be az Anonymous authentiká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)– Csak Windows 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 Membership komponensei
• User account létrehozása és törlése • User account-ok tárolása
– SQL Server, Microsoft Office Access, vagy egyéb • Authentikáció
– A Login vezé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.
Membership konfigurá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
Membership osztály használata I.
• Új felhasználó felvétele:MembershipUser userNew = Membership.CreateUser("Joe", "Pa$$w0rd",
"[email protected]");if (userNew == null) { lblMessage.Text = „User sikeresen létrehozva.";} else { lblMessage.Text =
"User létrehozása sikertelen";
}
Membership osztá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:
– A ContinueButtonClick 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.
LoginView vezé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:
<roleManager cacheRolesInCookie="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,
CreateUserWizard kontrolok használata
Alkalmazásunk megvalósítása