Thi t k & L p trình Web 2
Bài 9
B o
B o m t m t ng ng d ng d ng Web ASP.NET Web ASP.NET
Ths Tr n Th Bích H nh
Khoa CNTT
© 2009 Khoa Công ngh thông tin
N i
N i
M t s khái ni m v B o m t
Các c p đ b o m t trong m t ng d ng ASP.NET
ng nh p, Qu n lý thành viên, phân quy n trong ASP.NET
© 2009 Khoa CNTT - HKHTN
2
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
N i
N i
M t s khái ni m v B o m t
Các c p đ b o m t trong m t ng d ng ASP.NET
ng nh p, Qu n lý thành viên, phân quy n trong
ASP.NET
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
M t
M t s s Khái Khái ni m ni m B o B o m t m t
M t
M t s s Khái Khái ni m ni m B o B o m t m t
Authentication – Ch ng th c
– Qui trình ch ng th c ng i dùng – Th ng yêu c u ng i dùng nh p Tên đ ng nh p & m t
kh u
Authorization – C p quy n
– Qui trình quy t đ nh user đã ch ng th c đ c phép truy c p các tài nguyên nh t đ nh
các tài nguyên nh t đ nh – Th ng c p quy n d a trên Lo i ng i dùng (role-based
authorization)
Trang 2N i
N i
M t s khái ni m v B o m t
Các c p đ b o m t trong m t ng d ng ASP.NET
ng nh p, Qu n lý thành viên, phân quy n trong
ASP.NET
© 2009 Khoa CNTT - HKHTN
5
Các Các c p c p đđ b o b o m t m t trong trong ASP NET ASP NET Các
Các c p c p đđ b o b o m t m t trong trong ASP.NET ASP.NET
IIS
ASP.NET
© 2009 Khoa CNTT - HKHTN
6
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
IIS Security
Là c p đ b o m t đ u tiên đ c th c hi n khi có yêu c u
đ n webpage (request)
đ n webpage (request).
Các b c ki m tra:
– IIS ki m tra đ a ch IP c a request có đ c truy c p vào
domain hay không
– Ch ng th c ng C g t c g i dùng (n u c n) dù g ( u c )
– N u thành công chuy n request qua ASP.NET
– Ng g c l i thông báo cho ng g g i dùng bi t không g g đ c phép p p
truy c p
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
IIS Security
Trang 3Các hình hình th c th c ch ng ch ng th c th c trong trong IIS IIS
Các
Các hình hình th c th c ch ng ch ng th c th c trong trong IIS IIS
Anonymous
Basic
Digest
Integrated Windows Authentication
Certificate
© 2009 Khoa CNTT - HKHTN
9
IIS Anonymous Authentication
M c đ nh IIS cho phép anonymous truy c p vào m t ng
d ng Web
© 2009 Khoa CNTT - HKHTN
10
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
IIS Basic & Digest Authentication
– Yêu c u user nh p username & password
– Username & password đ c mã hóa và truy n qua HTTP header
– Username & password Username & password đ c ki m tra kh p v i tài kho n Windows đ c ki m tra kh p v i tài kho n Windows
trên server
– Ch nên s d ng v i HTTPS
Digest
Password đ c x lý v i hàm hash và g i lên server
– Password đ c x lý v i hàm hash và g i lên server
– Server th c hi n cùng x lý v i hàm hash v i password trên server
và ki m tra v i giá tr nh n đ c
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
IIS Integrated Windows Authentication
IIS ch ng th c user v i tài kho n user trên Windows
Khi s d ng trong m ng intranet, Windows Authentication cho phép IIS quy t đ nh yêu c u c a ng i dùng d a vào
vi c đ ng nh p c a user trên Windows
vi c đ ng nh p c a user trên Windows
Trang 4IIS Certificate Authentication
Certificate
– S d ng các certificate c a user đ th c hi n vi c ch ng
th c
– Trong mã hóa khóa công khai (public-key cryptography) m t
– Trong mã hóa khóa công khai (public-key cryptography) m t
certificate s d ng m t ch ký đi n t (digital signature) và
m t khóa công khai đi kèm v i đ nh danh ng i dùng
© 2009 Khoa CNTT - HKHTN
13
ASP NET Security ASP.NET Security
© 2009 Khoa CNTT - HKHTN
14
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Impersonation
M c đ nh Impersonation là disabled
– T t c ASP.NET request đ c th c thi b i đ nh danh m c
đ nh dành cho cho các ng d ng ASP.NET
• Tài kho n ASPNET t Tài kho n ASPNET t đ ng đ c t o khi cài NET Framework đ ng đ c t o khi cài NET Framework
• Tài kho n NETWORK SERVICE đ c đ nh ngh a s n trong
Windows Server 2003 và có quy n truy c p nh tài kho n
ASPNET
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Impersonation
Khi thi t l p impersonation là enabled cho m t ng d ng Web ng d ng s đ c th c thi d i đ nh danh đ c ch Web, ng d ng s đ c th c thi d i đ nh danh đ c ch
đ nh b i m t security token truy n t IIS
S S d ng impersonation khi d ng impersonation khi
– ng d ng web d a vào IIS đ ch ng th c user
– Server cho phép host nhi u p p ng d ng t g g nhi u khách hàng khác g nhau, cung c p cho m i ng d ng web m t tài kho n Windows riêng bi t đ ng n không cho ng d ng này truy c p vào tài nguyên
c a ng d ng khác
// Web.Config
<authentication mode="Windows" />
<identity impersonate="true" />
Trang 5Code Access Security
Tính n ng đ c h tr trong CLR
Qui đ nh nh ng ràng bu c cho phép các lo i mã l nh trong assembly
đ c quy n th c thi
– Trust level là m t t p các lu t p đ nh ngh a các class trong g g
// Web.config
<system.web>
<trust level="Medium"/>
</system.web>
© 2009 Khoa CNTT - HKHTN
17
Trust Levels
Full
– T t c NET class đ c phép s d ng & th c thi
High
– Không Không đ c s d ng unmanaged code enterprise services đ c s d ng unmanaged code, enterprise services, reflection
– ng d ng ch đ c phép truy xu t trong c u trúc th m c c a nó
Low
– Read-only application
© 2009 Khoa CNTT - HKHTN
18
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
ASP NET Authentication
ASP.NET Authentication
None
ch ng th c
ch ng th c trong c u hình c a
IIS
qua form đ ng nh p
c a Microsoft Passport
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Forms Authentication
Trang 6Forms Authentication
© 2009 Khoa CNTT - HKHTN
21
Forms Authentication
Cookieless (UseDefaultProfile)
Qui đ nh vi c ch ng th c l u trong cookie:
UseCookies, UseUri (nhúng ticket trong URL), và AutoDetect
thành công
All (hash & encrypte), Encryption, None, Validation (check ticket có b s a đ i)
requireSSL (false) q ( ) Yêu c u s d ng k t n i SSL khi truy n d g y li u
© 2009 Khoa CNTT - HKHTN
22
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Forms Authentication
enableCrossAppRedirects
(false)
ch ng th c
slidingExpiration (false) Reset l i th i gian expire c a cookie sau l n truy
i
c p cu i
// Web.Config
<authentication mode="Forms" >
<forms loginUrl="Login.aspx" timeout="86400"
slidingExpiration="true“ />
</authentication>
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
N i
N i
M t s khái ni m v B o m t
Các c p đ b o m t trong m t ng d ng ASP.NET
ng nh p, Qu n lý thành viên, phân quy n trong ASP.NET
Trang 7Membership Provider
Membership Provider
Là t p các l p c a NET cho phép developer x lý các
ch c n ng qu n lý ch ng th c ng i dùng
ch c n ng qu n lý ch ng th c ng i dùng
– Thêm ng i dùng m i
– L u thông tin ng L u thông tin ng i dùng trong CSDL i dùng trong CSDL
– Ch ng th c ng i dùng
– Phân quy n ng i dùng
– Qu n lý m t kh u (t o, s a, reset)
Membership Provider m c đ nh là SqlMembershipProvider
– T o CSDL aspnetdb trong SQLExpress và l u trong th m c
App_Data
© 2009 Khoa CNTT - HKHTN
25
Role Management Provider
Là t p các l p c a NET cho phép developer x lý các
ch c n ng qu n lý c p quy n ng i dùng
ch c n ng qu n lý c p quy n ng i dùng
– Thêm role m i
– Ch Ch đ nh ng i dùng vào các roles đ nh ng i dùng vào các roles
– Phân quy n cho phép ng i dùng truy c p vào tài nguyên web
Role Management Provider m c g đ nh là SqlRoleProvider q
© 2009 Khoa CNTT - HKHTN
26
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
ASP NET Login Controls
CreateUserWizard
Login
LoginName & LoginStatus
LoginView
ChangePassword g
PasswordRecovery
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
CreateUserWizard
CreateUserWizard
Trang 8Login Control
© 2009 Khoa CNTT - HKHTN
29
LoginName LoginName and and LoginStatus LoginStatus Controls Controls LoginName
LoginName and and LoginStatus LoginStatus Controls Controls
© 2009 Khoa CNTT - HKHTN
30
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
LoginView
LoginView
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
ChangePassword
ChangePassword
Trang 9PasswordRecovery
© 2009 Khoa CNTT - HKHTN
33
C
C u u hì hình nh Mail Server (SMTP) Mail Server (SMTP) C
C u u hì hình nh Mail Server (SMTP) Mail Server (SMTP)
© 2009 Khoa CNTT - HKHTN
34
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
C
C u u hì hình nh Mail Server (SMTP) Mail Server (SMTP)
C
C u u hì hình nh Mail Server (SMTP) Mail Server (SMTP)
// Web.Config
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from=“yourmail@gmail.com">
<network
host="smtp.gmail.com" port="465"
userName=“yourmail@gmail.com" password=“your password"
defaultCredentials="true"/>
</smtp>
/ ilS i
</mailSettings>
</system.net>
…
</configuration>
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
X ly ly G G ii mail mail ll y y ll ii Password Password X
X ly ly G G ii mail mail ll y y ll ii Password Password
using System.Net;
using System.Net.Mail;
protected void PasswordRecovery1_SendingMail(object sender, MailMessageEventArgs e) {
try {
SmtpClient smtpSender = new SmtpClient(“ smtp server ”, “ smtp port ”); smtpSender.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpSender.Credentials = new NetworkCredential(“ username ”, “ password ”); smtpSender.EnableSsl = true;
smtpSender.Send(e.Message);
} catch (Exception ex) {
Response.Write("There was a problem sending the email " + ex); }
e.Cancel = true;
} }
Trang 10L y y thông thông tin tin c c u u hì hình nh Mail Server Mail Server trong trong Web config Web config
L
L y y thông thông tin tin c c u u hì hình nh Mail Server Mail Server trong trong Web.config Web.config
using System.Web.Configuration;
using System Net Configuration;
Configuration config =
WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
(MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
// settings.Smtp.Network.Host
// settings.Smtp.Network.Port
// settings.Smtp.Network.Username
// settings.Smtp.Network.Password
© 2009 Khoa CNTT - HKHTN
37
X ly ly ll ii G G ii mail mail X
X ly ly ll ii G G ii mail mail
protected void PasswordRecovery1_SendMailError(object sender, SendMailErrorEventArgs e)
{
e.Handled = true;
© 2009 Khoa CNTT - HKHTN
PasswordRecovery1.SuccessText = e.Exception.Message;
}
38
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 1: Th c thi ASP.NET Sql Server Registration Tool
đ t o CSDL
– WINDOWS\Microsoft.NET\Framework\2.0.xxxx\
aspnet regsql.exe p _ g q
B c 2: C u hình ConnectionString Membership
B c 2: C u hình ConnectionString, Membership
Provider & Role Provider trong Web.Config
B c 3: S d ng Web Site Administration Tool đ c u
hình phân quy n p q y
– Menu > Website > ASP.NET Configuration
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 1
http://www codedigest com/FAQ/16-How-to-Configure-ASP-Net-Membership- http://www.codedigest.com/FAQ/16 How to Configure ASP Net Membership Providers-to-Use-Our-Own-Database-.aspx
Trang 11C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 2
<! S t th ti t i f SQL S >
<! Set the connection string for SQL Server >
<connectionStrings>
<clear />
<add name=" SqlConn "
connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog= Test ;"
/>
</connectionStrings>
© 2009 Khoa CNTT - HKHTN
http://help.maximumasp.com/SmarterTicket/Customer/KBArticle.aspx?articleid=878
41
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 2 (tt)
< t b>
<system.web>
<! Configure the Sql Membership Provider >
<membership defaultProvider=“ MySqlMembershipProvider " userIsOnlineTimeWindow="15">
<providers>
<clear />
<add name="MySqlMembershipProvider"
type="System Web Security SqlMembershipProvider"
type= System.Web.Security.SqlMembershipProvider connectionStringName=" SqlConn "
applicationName="/"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
© 2009 Khoa CNTT - HKHTN
passwordFormat Hashed /
</providers>
</membership>
</system.web>
42
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 2 (tt)
< t b>
<system.web>
<! Configure the Sql Role Provider >
<roleManager enabled ="true"
defaultProvider =“ MySqlRoleProvider " >
<providers>
<clear />
<add name =“MySqlRoleProvider"
type="System Web Security SqlRoleProvider"
type= System.Web.Security.SqlRoleProvider
connectionStringName=" SqlConn "
applicationName="/"/>
</providers>
</roleManager>
</system.web>
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
C u
C u hình hình s s d ng d ng Database Database riêng riêng cho cho Membership & Role Membership & Role
B c 3: Website Administration Tool
Trang 12Membership API
Membership.Method
CreateUser
DeleteUser
FindUsersByEmail
protected void btnLogin_Click(object s, EventArgs e) {
string usr = txtUser.Text;
FindUsersByName
GeneratePassword
GetAllUsers
g string pwd = txtPassword.Text;
// Use the membership system to authenticate user
if ( Membership.ValidateUser(usr, pwd) )
FormsAuthentication RedirectFromLoginPage(usr true);
GetAllUsers
GetNumberOfUsersOnline
GetUser
FormsAuthentication.RedirectFromLoginPage(usr,true);
else labError.Text = "User not found, try again";
}
GetUserNameByEmail
UpdateUser
ValidateUser
© 2009 Khoa CNTT - HKHTN
45
MembershipUser MembershipUser API API MembershipUser MembershipUser API API
IsOnline LastActivityDate LastLockoutDate LastLoginDate LastPasswordChangedDate PasswordQuestion
© 2009 Khoa CNTT - HKHTN
UserName
46
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Ví d - Qu n lý danh sách User trong GridView
<asp:ObjectDataSource ID=" odsUsers "
runat="server"
<asp:GridView ID="grdUsers“ runat="server"
DataSourceID =" odsUsers "
TypeName="System.Web.Security.Membership"
SelectMethod="GetAllUsers"
DeleteMethod="DeleteUser" >
<DeleteParameters>
AutoGenerateColumns="false"
AutoGenerateDeleteButton="true"
AutoGenerateSelectButton="true"
CellPadding="5"
<asp:ControlParameter
ControlID="grdUsers" Type="string"
PropertyName="SelectedDataKey.Values[0]"
CellPadding= 5
DataKeyNames=“UserName” >
<Columns>
<asp:BoundField HeaderText="Name"
D t Fi ld "U N " />
Name="username" />
</DeleteParameters>
</asp:ObjectDataSource>
DataField="UserName" />
<asp:BoundField HeaderText="Email"
DataField="Email"/>
<asp:BoundField HeaderText="Create Date“ DataField="CreationDate" />
Date DataField CreationDate /
<asp:BoundField HeaderText="Last Login“ DataField="LastLoginDate" />
</Columns>
</asp:GridView>
</asp:GridView>
Thi t k & L p trình Web 2 – Bài 9: B o m t ng d ng Web ASP.NET
Roles API
IsUserInRole