Tải bản đầy đủ (.pdf) (29 trang)

Bảo mật Servlet và Tomcat

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (298.34 KB, 29 trang )

Basic Security với Servlet và
Tomcat
Đào Anh Tuấn – datuan@fit.
hcmuns.edu.vn
Giới thiệu
• Một số kiểu chứng thực người dùng đơn giản:
▫ Basic
▫ Digest
▫ Form
▫ Client Certificate
• Cài đặt SSL trên Tomcat
• Virtual Host
Chứng thực người dùng
• Servlet hỗ trợ khá nhiều giao thức để chứng
thực người dùng:
▫ Basic
▫ Digest
▫ Form Authen
▫ Client Certificate
• Database về username / password sẽ do
Tomcat quản lý, thông qua các Realm
Cấu hình tomcat
• Mặc định các user này lấy trong file tomcat-users.xml; ta có
thể cấu hình để lưu trong các CSDL hoặc trong các file khác
(cấu hình trong file conf/server.xml)
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.
MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />


</GlobalNamingResources>
<Realm className="org.apache.catalina.realm.
UserDatabaseRealm"
resourceName="UserDatabase"/>
Cấu hình Realm
• Tomcat hỗ trợ các loại Realm sau:
▫ JDBCRealm - Accesses authentication information stored in a
relational database, accessed via a JDBC driver.
▫ DataSourceRealm - Accesses authentication information stored
in a relational database, accessed via a named JNDI JDBC
DataSource.
▫ JNDIRealm - Accesses authentication information stored in an
LDAP based directory server, accessed via a JNDI provider.
▫ MemoryRealm - Accesses authentication information stored in an
in-memory object collection, which is initialized from an XML
document (conf/tomcat-users.xml).
▫ JAASRealm - Accesses authentication information through the
Java Authentication & Authorization Service (JAAS) framework.
• Xem thêm trong tài liệu: />doc/realm-howto.html
Cấu hình thử file tomcat-users
• Đây là nơi chứa các users và roles mặc định
của tomcat
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="system"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="system" password="system" roles="system"/>
<user username="admin" password="admin" roles="manager,admin"/>
</tomcat-users>

Cấu hình Authentication cho ứng dụng
web
• Cấu hình thông qua trang web.xml
• Trước hết tạo trang web index.jsp chứa bất kỳ
nội dung nào.
• Sau đó, ta sẽ yêu cầu chỉ các user thuộc role
system của hệ thống mới được truy xuất file
này.
Định nghĩa roles
• Định nghĩa lại role(s) system, đây là role đã
được định nghĩa trong file tomcat-users.xml
• Lưu ý: hệ thống servlet là hệ thống có đặt tính
case-sensitive (System != system)
Định nghĩa các resource sẽ được bảo
vệ
• Mặc định ở đây ta bảo vệ các file *.jsp, method
GET và POST
Qui định phương thức chứng thực
• Để đơn giản ta chọn Basic (password gửi đi dạng clear
text).
• Theo đúng lý thuyết, Realm phải chọn trùng tên với
Realm trong Tomcat, nhưng ở đây đơn giản ta có thể
dùng để nhập một thông báo.
Lấy username đã đăng nhập
• Trong trang web, có thể lấy ra tên user đã đăng
nhập bằng hàm
request.getRemoteName();
request.getUserPrincipal();
Digest

• Thay mục Basic bằng Digest, việc chứng thực
sẽ được thực thi thông qua các hàm hash
Chứng thực với FORM
• Thay vì trình duyệt hiện lên 1 input dialog để
người dùng nhập, ta có thể qui định sẵn 1 trang
web chứa form đăng nhập.
• Khi người dùng truy xuất ứng dụng, nếu tomcat
phát hiện người dùng này chưa đăng nhập sẽ
tự động chuyển đến form trên.
Dùng form authen
• Qui định trang để login và trang thông báo kết
quả nếu fail
Xây dựng form login
• Form login có thể xây dựng giao diện bắt mắt,
nhiều màu sắc, tuy nhiên phải tuân thủ theo
chuẩn sau.
• Action=j_security_check
• Trường username và password có dạng:
<INPUT TYPE=TEXT NAME="j_username"
VALUE="" SIZE=15>
<INPUT TYPE=PASSWORD NAME="j_password"
VALUE="" SIZE=15>
Login.html
<FORM METHOD=POST ACTION="
j_security_check">
Username: <INPUT TYPE=TEXT NAME="
j_username"><br>
Password: <INPUT TYPE=PASSWORD NAME="
j_password"><br>
<INPUT TYPE=SUBMIT>

</FORM>
Chứng thực với Client Cert
• Khi người dùng đăng nhập, sẽ được yêu cầu
(hoặc web browser tự động) cung cấp
certificate.
• Tomcat sẽ so sánh với database user có sẵn để
quyết định quyền hạn.
• Lúc này file tomcat-users.xml phải sửa đổi
<user username=“CN=Dao Anh Tuan,OU=… ”
roles="system"/>
Cấu hình SSL với Tomcat
• Phát sinh certificate cho server Tomcat
• Có thể dùng công cụ keytool có sẵn trong thự
mục bin của bộ JDK.
• Phát sinh key (private/public key):
keytool -genkey
Tự sign certificate cho web server
• Dùng option selfcert:
Cấu hình TOMCAT
• Vào file server.xml:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="C:
\datuan_key" keystorePass="123456" />
Truy xuất qua https
• Do đây là chứng thực “tự ký” nên các trình duyệt báo lỗi
Connect qua https
Virtual Host
• Khi có nhiều trang web cùng được đặt lên một web
server, mỗi trang web có thể được truy xuất bởi một

domain riêng ta có thể dùng khái niệm virtual host.
• Ví dụ: Ta có 2 thư mục chứa các ứng dụng web
khác nhau:
▫ Tomcat_Home/web1/index.jsp -> Trang web bán
hàng, có domain name là www.banhang.com
▫ Tomcat_Home/web2/index.jsp -> Trang web blog, có
domain name là www.blog.com
• Cả 2 domain name này đều chỉ vào địa chỉ IP
của máy chủ chứa web server.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×