Thiết lập một vùng SQL với DB2 Express-C, WTP Eclipse, và Máy chủ Ứng dụng WebSphere, Bản Cộng đồng V1.1

Thực hiện bảo mật cơ sở dữ liệu với gói khởi công Java (Java kick-start)

Hướng dẫn này chỉ cho bạn biết cách lập ra một vùng SQL (SQL realm) để thực hiện bảo mật cơ sở dữ liệu cho một ứng dụng Web bằng cách sử dụng gói phần mềm miễn phí để khởi công Java ™ (Java kick-start package).

Krishnakumar Balachandar, Kỹ sư phần mềm, IBM

Krishnakumar Balachandar là một kỹ sư phần mềm cao cấp tại các phòng thí nghiệm phần mềm IBM ở Bangalore, Ấn Độ. Ông thuộc bộ phận của đội hỗ trợ cho Geronimo và WebSphere bản cộng đồng.



20 05 2009

Trước khi bạn bắt đầu

Khi triển khai thực hiện bảo mật trong một ứng dụng Web, cần phải có một mô-đun JAAS dành riêng để xử lý việc xác thực và cấp quyền cho người dùng. Máy chủ Ứng dụng WebSphere Bản Cộng đồng (WebSphere Application Server Community Edition) cung cấp một vùng SQL, có thể kết nối đến một cơ sở dữ liệu để thu thập các quyền hạn của người sử dụng. Trong hướng dẫn này bạn sẽ thấy cách thiết lập các bảng để tạo một vùng SQL trong DB2 Express-C, cách thiết lập một môi trường phát triển bằng cách sử dụng nền công cụ Web của Eclipse (Eclipse Web Tooling Platform) để tạo một ứng dụng Web, và cách triển khai ứng dụng Web từ Eclipse lên Máy chủ Ứng dụng WebSphere Bản Cộng đồng.

Tất cả các ứng dụng Web sẽ áp dụng một mức độ bảo mật nào đó đối với việc xác thực và cấp quyền người sử dụng để xác minh nhận dạng của người sử dụng và cho phép truy cập các chức năng của ứng dụng, áp dụng được đối với vai trò của người sử dụng này.

Các ứng dụng Web có thể sử dụng LDAP, cơ sở dữ liệu, hệ thống tệp tin, Kerberos, hoặc các hệ thống tương tự như vậy, để cung cấp việc xác thực và cấp quyền. Để truy cập dữ liệu bảo mật từ phương thức hoặc hệ thống được chọn, một vùng SQL được thiết lập ra bằng cách tạo các bảng trong một cơ sở dữ liệu và xác lập cấu hình cho một mô đun dịch vụ xác thực và cấp quyền trong Java (Java Authentication and Authorization Service - JAAS) để truy cập vào các bảng ấy từ một máy chủ ứng dụng.

Hình 1 cho thấy các thành phần khác nhau trong Máy chủ Ứng dụng WebSphere Bản Cộng đồng (sau đây gọi tắt là Bản Cộng đồng) được sử dụng để cung cấp một vùng SQL. Các ứng dụng Web sử dụng một vùng SQL kết nối vào cơ sở dữ liệu bằng cách sử dụng một pool hoặc trình điều khiển cơ sở dữ liệu. Quyền hạn của người sử dụng được lưu trong bảng trong cơ sở dữ liệu và được chuyển tải về khi thực hiện các lời gọi, bằng cách sử dụng vùng SQL JAAS.

Hình 1. Các thành phần của một vùng SQL
Hình 1. Các thành phần của một vùng SQL

Dịch vụ xác thực và cấp quyền trong Java (Java Authentication and Authorization Service - JAAS) là một bộ các API cho phép các ứng dụng Java truy cập vào các dịch vụ xác thực và dịch vụ kiểm soát truy cập mà không bị buộc vào dịch vụ mà nó sử dụng.

Thiết lập một vùng cơ sở dữ liệu

Thiết lập một vùng cơ sở dữ liệu bao gồm việc thực hiện các bước chung sau đây:

  • Tạo các bảng cho người sử dụng và các nhóm trong DB2 Express-C.
  • Triển khai một pool cơ sở dữ liệu trong máy chủ Bản Cộng đồng, nếu vùng đó định sử dụng một pool để kết nối với cơ sở dữ liệu.
  • Triển khai sơ đồ vùng SQL trong máy chủ Bản cộng đồng.
  • Lập cấu hình và triển khai ứng dụng Web mà sử dụng vùng SQL này.

Phần còn lại của hướng dẫn này giải thích chi tiết các nhiệm vụ ấy.


Thiết lập một cơ sở dữ liệu

Trong phần này, bạn sẽ thấy cách thiết lập cơ sở dữ liệu và các bảng cơ sở dữ liệu cần có cho vùng SQL. Bạn có thể tạo cơ sở dữ liệu và các bảng hoặc bằng cách sử dụng Trung tâm điều khiển (Control Center) hoặc thông qua việc chạy một kịch bản lệnh SQL.

Sử dụng Trung tâm điều khiển

Tạo cơ sở dữ liệu

  1. Trong DB2 Express-C, mở Trung tâm điều khiển.
  2. Nhấn chuột phải vào All Databases, sau đó chọn Create Database => Standard.
  3. Gõ nhập WASCE làm tên cơ sở dữ liệu.
  4. Nhấn Finish.

Bạn vừa tạo ra một cơ sở dữ liệu mới có tên WASCE và sẽ thấy nó được liệt kê dưới mục All Databases (Hình 2).

Hình 2. Cơ sở dữ liệu mới được tạo
Hình 2. Cơ sở dữ liệu mới được tạo

Tạo các bảng

Bây giờ, hãy tạo các bảng cho người dùng (USERS) và cho các nhóm (GROUP) trong cơ sở dữ liệu mới WASCE:

  1. Dưới mục WASCE trong liệt kê thư mục, nhấn chuột phải vào Tables, sau đó chọn Create.
  2. Gõ nhập làm tên bảng USERS, sau đó nhấn Next.
  3. Thêm một cột:
    1. Chọn Add để thêm một cột mới vào bảng.
    2. Gõ nhập USERNAME làm tên cột.
    3. Chọn kiểu dữ liệu của cột là VARCHAR.
    4. Đối với mục Nullable or not, chọn No.
    5. Nhấn Apply.
  4. Lặp lại bước 3 để thêm một cột EMAIL và một cột PASSWORD vào bảng USERS, với các giá trị như thấy trong Hình 3. Khi hoàn tất, nhấn OK.
  5. Lặp lại các bước từ 1 đến 4 để tạo ra một bảng GROUPS mới với hai cột: GROUPNAMEUSERNAME.
  6. Nhấn Next => Next => Next để đến các phím Define trên ô hình bảng mới.
  7. Chọn Add Primary. Từ các cột có sẵn, chọn cột nào định làm khoá chính cho mỗi bảng:
    1. Đối với bảng USERS, chọn USERNAME và đối với bảng chọn USERNAME/GROUPNAME làm khóa chính.
    2. Đối với bảng GROUPS, chọn Add foreign => USERNAME. Nhấn nút > để chuyển nó vào khoá ngoại. Chọn USERNAME làm khóa chính trong bảng Cha (Schema/Name - ADMINISTRATOR/USERS).
  8. Nhấn Finish và bảng được tạo ra.

Áp dụng các bước trên đây và các định nghĩa lược đồ như thấy trong Hình 3 và Hình 4 để tạo ra các bảng USERS và GROUPS. Đối với bảng USERNAME thì USERNAME là khóa chính. Đối với bảng GROUPS thì GROUPNAME và USERNAME là các khóa chính, và USERNAME là một khoá ngoại (tham chiếu đến USERNAME trong bảng USERS).

Lược đồ USERS
Hình 3. Lược đồ USERS
Hình 4. Lược đồ GROUPS
Hình 4. Lược đồ GROUPS

Trong các bước nói trên đây, các bảng USERS và GROUPS được tạo ra dưới lược đồ ADMINISTRATOR. Nếu bạn đã đăng nhập dưới tên db2admin, các bảng sẽ được tạo ra dưới lược đồ DB2ADMIN.

Điền giá trị vào các bảng

  1. Chọn WASCE => Tables => USERS.
  2. Nhấn chuột phải vào bảng USERS, sau đó chọn Open => Add row.
  3. Gõ nhập các giá trị thử vào từng trường trong bản ghi cơ sở dữ liệu, sau đó chọn Commit.
  4. Lặp lại các bước 2 và 3 đối với từng bản ghi thử mà bạn muốn tạo ra, sau đó nhấn Close.
  5. Lặp lại các bước từ 1 đến 4 đối với bảng GROUPS (Hình 5).
Hình 5. Tạo các bản ghi dữ liệu thử
Hình 5. Tạo các bản ghi dữ liệu thử

Sử dụng các kịch bản lệnh

Thay vì sử dụng Trung tâm điều khiển DB2, bạn có thể tạo cơ sở dữ liệu, bảng, và dữ liệu thử bằng cách sử dụng một kịch bản lệnh SQL. Tệp tin tải về kèm trong hướng dẫn này chứa một tệp tin kịch bản lệnh mẫu, db2_realm.sql. Hãy thực hiện kịch bản lệnh này từ dòng lệnh DB2 để tạo ra cơ sở dữ liệu và bảng:

  1. Mở một cửa sổ lệnh Windows hoặc chạy tệp tin bó (batch file) DB2 /<db2 install directory>bin/db2cw.bat.
  2. Thực hiện tệp tin kịch bản lệnh mẫu bằng lệnh này: db2 -tvfdb2-realm.sql.

Nếu không gặp lỗi, các thông báo thực hiện thành công sẽ được tạo ra cho SQL này (Hình 6).

Hình 6. Tạo cơ sở dữ liệu, bảng, và dữ liệu thử thông qua sử dụng kịch bản lệnh
Hình 6. Tạo cơ sở dữ liệu, bảng và dữ liệu thử thông qua sử dụng kịch bản lệnh

Tạo ứng dụng Web

Trong phần này, bạn sẽ sử dụng Nền Công cụ Web của Eclipse (Eclipse Web Tools Platform - WTP) để tạo ra một ứng dụng Web đơn giản. Tuy nhiên trước khi bắt đầu với ứng dụng, bạn cần phải định nghĩa một máy chủ mới trong Eclipse (mà các ứng dụng mới sẽ được triển khai lên nó) và tạo một Môi trường Java Runtime (JRE). Sau đó, bạn có thể sử dụng WTP Eclipse để tạo ra các thành phần ứng dụng (như các tệp tin WAR và EAR). Tệp tin tải về kèm hướng dẫn này chứa một tệp tin EAR nguồn của một ứng dụng mẫu mà bạn có thể nhập khẩu vào WTP Eclipse.

Xác định một máy chủ mới

Để triển khai một ứng dụng, bạn cần định nghĩa một máy chủ trong Eclipse:

  1. Trong Eclipse, nhấn chuột phải vào phiếu Server và chọn New Server để mở thủ thuật New Server (Hình 7).
    Hình 7. Xác định máy chủ mới
    Hình 7. Xác định máy chủ mới
  2. Chọn WebSphere Application Server Community v1.1 Server, sau đó nhấn Next.
  3. Gõ nhập các giá trị vào tất cả các trường, như Hình 8, sau đó nhấn Finish.
    Hình 8. Các tham số máy chủ mới
    Hình 8. Các tham số máy chủ mới

Tạo một JRE

Để xây dựng ứng dụng dành cho một môi trường chạy Java (JRE - Java Runtime Environment) được hỗ trợ, trong trường hợp này là JRE IBM, bạn cần phải cấu hình JRE đó trong WTP Eclipse:

  1. Trong Eclipse, chọn Window => Preferences.
  2. Chọn Java => Installed JREs.
  3. Nhấn Add. . .
  4. Trên hộp thoại Add JRE, nhập các giá trị vào tất cả các trường, như trong Hình 9.
    Hình 9. Thêm JRE
    Hình 9. Thêm JRE
  5. Phải chắc chắn JRE này được chọn là JRE mặc định.
  6. Tiếp theo bạn cần chắc chắn rằng JRE IBM sẽ chạy trên máy chủ mới mà bạn đã tạo ra trước đó. Nhấn chuột phải vào máy chủ mới, sau đó chọn Open (Hình 10).
    Hình 10. Mở máy chủ mới
    Hình 10. Mở máy chủ mới
  7. Bên cạnh mục Runtime, chọn Edit.
  8. Đối với mục JRE, chọn IBM (Hình 11), sau đó chọn Finish.
    Hình 11. Chọn JRE IBM
    Hình 11. Chọn JRE IBM

Phát triển một ứng dụng

Ứng dụng Web sẽ gồm các trang web dành cho ứng dụng (trong một tệp tin WAR) và sẽ được bổ sung vào một ứng dụng doanh nghiệp (trong một tệp tin EAR). Để phục vụ cho hướng dẫn này, bạn có thể sử dụng một ứng dụng mà bạn phát triển từ ban đầu, hoặc bạn có thể sử dụng ứng dụng mẫu kèm trong tệp tin tải xuống.

Tạo một ứng dụng mới trong WTP Eclipse

  1. Chạy WTP Eclipse bằng cách nhấn đúp chuột vào eclipse.exe từ địa chỉ mà bạn trích xuất nền WTP hoặc bằng cách thực hiện eclipse.exe từ một dòng lệnh.
  2. Chọn File => New => Project => Web =>Dynamic Web Project.
  3. Trên hộp thoại Dynamic Web Project, gõ nhập hoặc chọn các giá trị sau:
    • Project name: SQLRealmWeb
    • Target runtime: WebSphere Community Edition v1.1
    • EAR membership: SQLRealmApp
  4. Nếu bạn cần tạo ra một tùy chọn môi trường chạy dành cho Máy chủ Ứng dụng WebSphere, Bản Cộng đồng V1.1 (Hình 12):
    1. Nhấn nút New cạnh Target Runtime.
    2. Chọn WebSphere Application Server Community Edition v1.1, sau đó nhấn Next.
    3. Chọn IBM for JRE, và di chuyển đến thư mục cài đặt máy chủ ứng dụng thích hợp, sau đó nhấn Finish.
      Hình 12. Tạo môi trường chạy là máy chủ Bản Cộng đồng
      Hình 12. Tạo môi trường chạy là máy chủ Bản Cộng đồng
  5. Nhấn Next trên hai ô hình tiếp theo.
  6. Đối với Context Root, nhập /SQLRealmWeb, sau đó nhấn Next.
  7. Cấu hình cho kế hoạch triển khai Geronimo bằng cách nhập vào các giá trị sau:
    • Group ID: wasce
    • Artifact ID: sqlrealm
    • Version: 1.0
    • Artifact Type: WAR
  8. Nhấn Finish (Hình 13).
    Hình 13. Thiết lập máy chủ đã hoàn tất
    Hình 13. Thiết lập máy chủ đã hoàn tất

Nhập khẩu ứng dụng mẫu vào WTP Eclipse

Nếu bạn chọn nhập khẩu dự án mẫu, tệp tin tải về kèm hướng dẫn này chứa một tệp tin EAR mà bạn có thể nhập khẩu vào vùng làm việc WTP Eclipse:

  1. Trong Eclipse, chọn File => Import => J2EE.
  2. Đối với Source File, nhập SQLRealmAppSrc.ear, sau đó nhấn Next.
  3. Gõ nhập hoặc chọn các giá trị sau:
    • EAR Project: SQLRealmApp
    • Web Project: SQLRealmWeb
    • Target Runtime: WebSphere Community Edition v1.1
  4. Nếu bạn cần tạo ra một tùy chọn môi trường chạy dành cho Máy chủ Ứng dụng WebSphere, Bản Cộng đồng V1.1 (Hình 12):
    1. Nhấn nút New cạnh Target Runtime.
    2. Chọn WebSphere Application Server Community Edition v1.1, sau đó nhấn Next.
    3. Chọn IBM đối với JRE, và di chuyển đến thư mục cài đặt máy chủ ứng dụng thích hợp, sau đó nhấn Finish.
  5. Click Finish.

Triển khai ứng dụng

Với ứng dụng được tạo ra, bạn có thể triển khai nó lên môi trường chạy máy chủ bản cộng đồng. Tuy nhiên để chạy ứng dụng này, bạn cần có một pool cơ sở dữ liệu và một sơ đồ vùng:

Triển khai pool cơ sở dữ liệu

Để kết nối DB2, bạn cần có một pool cơ sở dữ liệu, mà bạn có thể tạo ra bằng cách triển khai một sơ đồ pool cơ sở dữ liệu với thủ thuật có sẵn từ bàn quản trị máy chủ Bản Cộng đồng:

  1. Đăng nhập vào bàn quản trị máy chủ Bản Cộng đồng bằng cách khởi động máy chủ. Để khởi động máy chủ, nhấn chuột phải vào máy chủ mới mà bạn tạo ra trên đây, và chọn Start. Sau khi máy chủ khởi động, trạng thái đổi sang màu xanh lục và hiển thị chữ "Started". Bây giờ bạn có thể cho chạy bàn quản trị bằng cách nhấn chuột phải vào máy chủ đã được khởi động và chọn Launch Community Edition Console. Nhập vào tên người sử dụng là system và mật khẩu là manager.
  2. Dưới mục Services, chọn Database Pools => Using Geronimo PoolsWizard.
  3. Đối với Database Pools, gõ nhập Db2Realm, rồi nhấn Next.
  4. Trên ô hình Select Driver, JAR, Parameters, nhập vào hoặc chọn các giá trị cho tất cả các trường như thấy trong Hình 14. Khi hoàn tất, nhấn Next.
    Hình 14. Nhập các tham số pool cơ sở dữ liệu
    Hình 14. Nhập các tham số pool cơ sở dữ liệu
  5. Kiểm tra kết nối xem có lỗi không bằng cách chọn Test connection. Nếu không gặp lỗi, bạn sẽ thấy thông báo: Test Result: Connected to DB2/NT SQL09000 in the console.
  6. Khi bạn đã triển khai pool này, nó sẽ được khởi động và chạy (Hình 15).
    Hình 15. Pool cơ sở dữ liệu được triển khai
    Hình 15. Pool cơ sở dữ liệu được triển khai

Triển khai sơ đồ vùng

Máy chủ Bản Cộng đồng kết nối vào các cơ sở dữ liệu SQL, sử dụng JAAS theo mặc định, để cung cấp một vùng SQL cho các ứng dụng được triển khai trong máy chủ. Bạn có thể tạo kết nối này bằng cách sử dụng một trình điều khiển JDBC kết nối trực tiếp vào cơ sở dữ liệu, hoặc bằng cách sử dụng một pool cơ sở dữ liệu để nhận một kết nối từ pool để kết nối với cơ sở dữ liệu.

Sơ đồ vùng (xem Liệt kê 12) được sử dụng để triển khai một vùng SQL mà kết nối với cơ sở dữ liệu. Sơ đồ vùng chứa Geronimo GBeans cần có để tạo ra một vùng SQL. GBean "sql-login" có các thuộc tính mà bạn sử dụng để xác định kiểu vùng loginModuleClass = org.apache.geronimo.security.realm.providers.SQLLoginModule, và các tùy chọn để bạn xác định các thuộc tính JDBC cần thiết để kết nối với cơ sở dữ liệu. Bạn có thể sử dụng sơ đồ này để kết nối với bất kỳ cơ sở dữ liệu JDBC nào. Trong bài tập này, bạn có thể chỉ rõ trình điều khiển JDBC hoặc tên nguồn dữ liệu (DataSource) để kết nối với cơ sở dữ liệu.

Sử dụng trình điều khiển JDBC

Liệt kê 1 cho thấy một sơ đồ vùng SQL sử dụng trình điều khiển JDBC để kết nối với cơ sở dữ liệu. Sơ đồ này chứa trong tệp tin tải về tên là sqlplan.xml. Trong các câu lệnh in đậm trong Liệt kê 1, hãy thay ADMINISTRATORS bằng tên lược đồ trong đó các bảng được tạo ra.

Liệt kê 1. Sơ đồ vùng SQL thông qua việc sử dụng trình điều khiển JDBC
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
  <environment>
    <moduleId>
      <groupId>db2</groupId>
      <artifactId>realm</artifactId>
      <version>1.0</version>
      <type>car</type>
    </moduleId>
    <dependencies>
      <dependency>
        <groupId>geronimo</groupId>
        <artifactId>j2ee-security</artifactId>
        <version>1.1</version>
        <type>car</type>
      </dependency>
      <dependency>
        <groupId>console.dbpool</groupId>
        <artifactId>DB2Realm</artifactId>
        <version>1.0</version>
        <type>rar</type>
      </dependency>
    </dependencies>
    <hidden-classes/>
    <non-overridable-classes/>
  </environment>
  <gbean name="sql-login" class="org.apache.geronimo.security.jaas.LoginModuleGBean">
    <attribute name="loginModuleClass">org.apache.geronimo.
        security.realm.providers.SQLLoginModule</attribute>
    <attribute name="serverSide">true</attribute>
    <attribute name="options">jdbcUser=db2admin
      jdbcPassword=db2admin
      jdbcURL=jdbc:db2:WASCE
      jdbcDriver=com.ibm.db2.jcc.DB2Driver
      userSelect=select username, password from ADMINISTRATOR.USERS groupSelect=select 
          groupname, username from ADMINISTRATOR.GROUPS</attribute>
    <attribute name="loginDomainName">sql-realm</attribute>
  </gbean>
  <gbean name="sql-realm" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
    <attribute name="realmName">sql-realm</attribute>
    <reference name="LoginModuleConfiguration">
      <name>sql-login</name>
    </reference>
    <reference name="ServerInfo">
      <name>ServerInfo</name>
    </reference>

    <!--Add-->
    <reference name="LoginService">
      <name>JaasLoginService</name>
    </reference>
  </gbean>
  <gbean name="sql-login" class="org.apache.geronimo.security.jaas.JaasLoginModuleUse">
    <attribute name="controlFlag">REQUIRED</attribute>
    <reference name="LoginModule">
      <name>sql-login</name>
    </reference>
  </gbean>
  <gbean name="sqltest"
class="org.apache.geronimo.security.jaas.ServerRealmConfigurationEntry">
    <attribute name="applicationConfigName">sqltest</attribute>
    <attribute name="realmName">sql-realm</attribute>
    <reference name="LoginService">
      <name>JaasLoginService</name>
    </reference>
  </gbean>
</module>

Sử dụng pool cơ sở dữ liệu

Liệt kê 2 cho thấy một sơ đồ vùng SQL có sử dụng một pool cơ sở dữ liệu (DB2Realm) mà được triển khai bằng cách sử dụng thủ thuật bàn điều khiển. Sơ đồ chứa trong tệp tin tải về tên là sqlpoolplan.xml.

Liệt kê 2. Sơ đồ vùng SQL bằng cách sử dụng pool cơ sở dữ liệu
<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
  <environment>
    <moduleId>
      <groupId>db2</groupId>
      <artifactId>pool-realm</artifactId>
      <version>1.0</version>
      <type>car</type>
    </moduleId>
    <dependencies>
      <dependency>
        <groupId>geronimo</groupId>
        <artifactId>j2ee-security</artifactId>
        <version>1.1</version>
        <type>car</type>
      </dependency>
      <dependency>
        <groupId>console.dbpool</groupId>
        <artifactId>DB2Realm</artifactId>
        <version>1.0</version>
        <type>rar</type>
      </dependency>
    </dependencies>
    <hidden-classes/>
    <non-overridable-classes/>
  </environment>
  <gbean name="sqlpool-login"
class="org.apache.geronimo.security.jaas.LoginModuleGBean">
    <attribute name="loginModuleClass">org.apache.geronimo.security.realm.
        providers.SQLLoginModule</attribute>
    <attribute name="serverSide">true</attribute>
    <attribute name="options">
      userSelect=select username, password from ADMINISTRATOR.USERS groupSelect=select 
     groupname, username from ADMINISTRATOR.GROUPS dataSourceName=DB2Realm</attribute>
    <attribute name="loginDomainName">sqlpool-realm</attribute>
  </gbean>
  <gbean name="sqlpool-realm"
class="org.apache.geronimo.security.realm.GenericSecurityRealm">
    <attribute name="realmName">sqlpool-realm</attribute>
    <reference name="LoginModuleConfiguration">
      <name>sqlpool-login</name>
    </reference>
    <reference name="ServerInfo">
      <name>ServerInfo</name>
    </reference>
    <!--Add-->
    <reference name="LoginService">
      <name>JaasLoginService</name>
    </reference>
  </gbean>
  <gbean name="sqlpool-login"
class="org.apache.geronimo.security.jaas.JaasLoginModuleUse">
    <attribute name="controlFlag">REQUIRED</attribute>
    <reference name="LoginModule">
      <name>sqlpool-login</name>
    </reference>
  </gbean>
  <gbean name="sqlpooltest"
class="org.apache.geronimo.security.jaas.ServerRealmConfigurationEntry">
    <attribute name="applicationConfigName">sqlpooltest</attribute>

Triển khai vùng

Bạn có thể triển khai các vùng đến máy chủ bằng cách sử dụng bàn quản trị:

  1. Khởi động máy chủ Bản Cộng đồng từ WTP Eclipse. Trong Eclipse, chọn máy chủ mà bạn tạo ra trước đó bằng cách nhấn chuột phải vào phiếu Server sau đó chọn Start (Hình 16).
    Hình 16. Khởi động máy chủ
    Hình 16. Khởi động máy chủ
  2. Đăng nhập vào bàn quản trị máy chủ Bản Cộng đồng.
  3. Triển khai sơ đồ vùng SQL có sử dụng trình điều khiển JDBC (sqlplan.xml như trong Liệt kê 1) bằng cách chọn Deploy New trên bàn quản trị (Hình 17).
    Hình 17. Triển khai vùng cơ sở dữ liệu
    Hình 17. Triển khai vùng cơ sở dữ liệu
  4. Triển khai sơ đồ vùng cơ sở dữ liệu SQL có sử dụng pool cơ sở dữ liệu (sqlpoolplan.xml như trong Liệt kê 2).
  5. Kiểm tra xem hai sơ đồ này đã được triển khai thành công chưa bằng cách chọn Systems Modules dưới mục Applications trong bàn quản trị (Hình 18).
    Hình 18. Kiểm tra triển khai vùng thành công
    Hình 18. Kiểm tra triển khai vùng thành công

Triển khai ứng dụng

Với ứng dụng và cấu hình máy chủ đã xác định trong Eclipse, và vùng cơ sở dữ liệu đã triển khai, bây giờ bạn có thể triển khai ứng dụng lên máy chủ.

  1. Trong mục Community Edition, chọn phiếu Server nhấn chuột phải vào máy chủ trước đó bạn đã tạo ra và sau đó chọn Add and Remove Projects.
  2. Chọn SQLRealmApp từ danh sách các dự án hiện có và nhấn Add > để chuyển nó sang danh sách các dự án được cấu hình (Configured projects) (Hình 19).
  3. Nhấn Finish.
    Hình 19. Thêm vào các dự án được cấu hình
    Hình 19. Thêm vào các dự án được cấu hình
  4. Khởi động máy chủ. Từ phiếu Server nhấn chuột phải một lần nữa vào máy chủ của bạn và chọn Start. Ứng dụng sẽ chạy trên máy chủ bạn chọn.
  5. Để khởi chạy bàn quản trị máy chủ, nhấn chuột phải vào máy chủ Community Edition, sau đó chọn Launch Community Edition Console. Gõ nhập mã nhận dạng là system và mật khẩu đăng nhập là manager, (Hình 20).
    Hình 20. Khởi chạy các bàn quản trị
    Hình 20. Khởi chạy các bàn quản trị

Chạy ứng dụng

Trong các phần trước, bạn đã tạo ra và triển khai ứng dụng Web lên máy chủ từ WTP Eclipse. Tiếp đó bạn có thể sử dụng ứng dụng, làm theo các hướng dẫn trong phần này để kiểm tra việc xác thực, cấp quyền, và truy cập vào pool cơ sở dữ liệu. Ứng dụng nói đến trong phần này là ứng dụng mẫu cung cấp trong tệp tin tải xuống.

Truy cập ứng dụng

Để truy cập vào ứng dụng Web:

  1. Từ Eclipse Navigator, nhấn chuột phải vào ứng dụng Web SQLRealmWeb, sau đó chọn Run As => Run on Server.
  2. Chọn WebSphere Application Server Community Edition 1.1, đó là máy chủ bạn đã xác định trước đó.
  3. Dự án đã được thêm vào. Chọn NextFinish.
  4. Ứng dụng nay sẽ sẵn sàng tại địa chỉ http://localhost:8080/SQLRealmWeb/ (Hình 21).
    Hình 21. Kiểm tra ứng dụng
    Hình 21. Kiểm tra ứng dụng

Kiểm tra việc xác thực

Bao gồm trong ứng dụng mẫu này là một số kết hợp mã nhận dạng người sử dụng và mật khẩu hợp lệ (để kiểm tra việc xác thực) với các vai trò khác nhau (để kiểm tra cấp quyền). Kiểm tra việc xác thực bằng cách đăng nhập. Khi sử dụng một mã nhận dạng người sử dụng và mật khẩu đúng bạn sẽ đăng nhập được. Sử dụng sai mã nhận dạng người sử dụng và mật khẩu sẽ hiển thị trang lỗi như trong Hình 22.

Mã nhận dạng người sử dụng/các giá trị mật khẩu hợp lệ như sau:

system/manager
admin/admin123
user1/user1123
user2/user2123
guest1/guest1123
guest2/guest2123

Hình 22. Trang báo lỗi ứng dụng
Hình 22. Trang báo lỗi ứng dụng

Kiểm tra việc cấp quyền

Khi đã được xác thực và ở trong ứng dụng, người sử dụng được phép truy cập vào các khu vực ứng dụng Web dựa trên vai trò công việc của người sử dụng, như đã xác định trong bộ mô tả triển khai. Ứng dụng mẫu được định nghĩa với ba vai trò: quản trị viên, người sử dụng, và khách. Một người sử dụng với vai trò quản trị có quyền truy cập vào tất cả các tài khoản trong ứng dụng mẫu, nhưng một người sử dụng với tư cách là khách sẽ chỉ có thể truy cập vào các trang web được xác định để cho khách. Kiểm tra việc này bằng cách vào ứng dụng với các mã nhận dạng người sử dụng và mật khẩu khác nhau với vai trò quản trị viên, người sử dụng và khách. Hình 23 cho thấy một người dùng đăng nhập là quản trị viên, nhưng cũng là người có thể xem các trang web dành cho khách.

Hình 23. Người sử dụng là quản trị viên đang xem trang dành cho khách
Hình 23. Người sử dụng là quản trị viên đang xem trang dành cho khách

Trong trường hợp truy cập trái phép (thí dụ nếu một người sử dụng là khách cố truy cập một trang mà chỉ dành cho quản trị viên), một lỗi tình trạng HTTP 403 xuất hiện (Hình 24) và ngăn chặn truy cập vào trang web này.

Hình 24. Lỗi quyền hạn
Hình 24. Lỗi quyền hạn

Sử dụng pool cơ sở dữ liệu

Ứng dụng Web mặc định có cấu hình để sử dụng vùng SQL mà sử dụng trình điều khiển JDBC. Bạn có thể thay đổi điều này để nó sử dụng pool cơ sở dữ liệu bằng cách thay đổi tên vùng trong tệp tin geronimo-web.xml là <security-realm-name>sqlpool-realm</security-realm-name>, và khởi động lại máy chủ. Kiểm tra lại xem việc này có được thực hiện không bằng cách tắt cấu hình db2/realm/1.0/car trong máy chủ.

Nội dung của tệp tin tải về

Tệp tin tải về kèm theo hướng dẫn này, sample-db2-realm.zip, gồm các tệp tin sau:

  • db2-realm.sql - Kịch bản lệnh SQL để tạo cơ sở dữ liệu và các bảng.
  • db2-plan.xml - Sơ đồ triển khai một pool cơ sở dữ liệu DB2.
  • sqlplan.xml - Sơ đồ vùng SQL sử dụng trình điều khiển JDBC.
  • sqlpoolplan.xml - Sơ đồ vùng SQL sử dụng một pool cơ sở dữ liệu.
  • SQLRealmAppSrc.ear - Mã nguồn của ứng dụng Web mẫu.

Kết luận

Hướng dẫn này cho bạn thấy cách tạo một vùng SQL và triển khai một ứng dụng Web sử dụng vùng này. Trong ví dụ này, bạn đã sử dụng DB2 Express-C làm cơ sở dữ liệu và nền công cụ Web của Eclipse làm môi trường phát triển để tạo ra một ứng dụng và triển khai nó lên Máy chủ Ứng dụng WebSphere, Bản Cộng đồng, chủ chứa ứng dụng.

Lời cảm ơn

Tác giả xin cảm ơn Manu T. George (Hỗ trợ WebSphere Application Server Community Edition L3) và Anitha Krishnasamy (Phát triển Kinh doanh WebSphere Application Server Community Edition) đã đọc lại hướng dẫn này và cho nhiều ý kiến có giá trị.


Tải về

Mô tảTênKích thước
Mã ví dụsample-db2-realm.zip28KB

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management, Công nghệ Java, Nguồn mở
ArticleID=388607
ArticleTitle=Thiết lập một vùng SQL với DB2 Express-C, WTP Eclipse, và Máy chủ Ứng dụng WebSphere, Bản Cộng đồng V1.1
publish-date=05202009