Spring Famework [10] là một nền tảng Java mã nguồn mở. Nó ban đầu được viết
bởi Rod Johnson và được phát hành lần đầu tiên theo giấy phép Apache 2.0 vào tháng 6 năm 2003. Spring là khung phát triển ứng dụng phổ biến nhất cho Java doanh nghiệp. Hàng triệu nhà phát triển trên khắp thế giới sử dụng Spring Framework để tạo
mã hiệu suất cao, dễ kiểm tra và có thể sử dụng lại. Kiến trúc Spring Framework là một kiến trúc xếp lớp được sắp xếp bao gồm các mô-đun khác nhau, bên dưới là sơ
Spring Framework Runtime
Hình 3. Kiến trúc tổng thể của Spring Framework
Core Container
Container này có 4 modules sau:
- Spring Core: Module này là cốt lõi của Spring Framework. Nó cung cấp triển khai
cho các tính năng như IoC (Inversion of Control) và Dependency Injection với mẫu thiết kế singleton.
- Spring Bean: Cung cấp triển khai cho mẫu thiết kế nhà máy thông qua
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
- Spring context: Module này được xây dựng trên cơ sở vững chắc được cung cấp
bởi các module Core và Beans và là phương tiện để truy cập bất kỳ đối tượng nào
được xác định và định cấu hình.
- Spring Expression Languages (SpEL): Đây là phần mở rộng cho ngôn ngữ biểu
thức được hỗ trợ bởi các trang máy chủ Java. Nó cung cấp một ngôn ngữ biểu thức
mạnh mẽ để truy vấn và thao tác biểu đồ đối tượng, trong thời gian chạy.
Spring Data Access/ Integration
Nó bao gồm 5 modules sau:
- JDBC: Module này cung cấp lớp trừu tượng JDBC giúp loại bỏ nhu cầu xử lý ngoại lệ lặp đi lặp lại và không cần thiết.
- ORM: ORM là viết tắt của Object Relatic Mapping . Module này cung cấp tính nhất quán / tính di động cho mã của chúng tôi bất kể công nghệ truy cập dữ liệu dựa trên khái niệm ánh xạ hướng đối tượng.
- OXM: OXM là viết tắt của Object XML Mappers. Nó được sử dụng để chuyển đổi các đối tượng thành định dạng XML và ngược lại. Spring OXM cung cấp API thống nhất để truy cập vào bất kỳ khung OXM nào trong số này.
- JMS: JMS là viết tắt của Java Messaging Service. Module này chứa các tính năng để tạo và tiêu thụ tin nhắn giữa các khách hàng khác nhau.
- Giao dịch: Module này hỗ trợ quản lý giao dịch theo chương trình và khai báo
cho các lớp thực hiện giao diện đặc biệt và cho tất cả POJO của bạn. Tất cả các khái niệm thực hiện giao dịch cấp doanh nghiệp có thể được thực hiện trong Spring bằng cách sử dụng module này.
Spring web
Lớp web bao gồm các module sau:
- Web: Module này sử dụng trình nghe servlet và ngữ cảnh ứng dụng hướng
- Web-Socket: Module này cung cấp hỗ trợ cho giao tiếp hai chiều và dựa trên WebSocket giữa máy khách và máy chủ trong các ứng dụng web.
- Web-Portlet: Module này còn được gọi là module Spring MVC Portlet. Nó cung cấp hỗ trợ cho các Portlet dựa trên Spring và phản ánh chức năng của module Web Servlet.
Aspect Oriented Programming (Lập trình hướng đối tượng - AOP)
Ngôn ngữ AOP là một công cụ mạnh mẽ cho phép các nhà phát triển thêm chức
năng doanh nghiệp vào ứng dụng như giao dịch, bảo mật, vv Nó cho phép chúng ta viết ít mã hơn và tách biệt logic mã. AOP sử dụng mối quan tâm xuyên suốt.
Intrustment
Module này cung cấp hỗ trợ thiết bị đo lớp và triển khai trình nạp lớp được sử dụng trong các máy chủ ứng dụng nhất định.
Aspect
Module này hỗ trợ kiểm tra các thành phần Spring với JUnit hoặc TestNG. Nó cung cấp tải nhất quán Spring ApplicationContexts và bộ nhớ đệm của các bối cảnh đó. Nó cũng cung cấp các đối tượng giả mà chúng ta có thể sử dụng để kiểm tra mã riêng lẻ.
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
2.2.3. Cơ chế hoạt động của dịch vụ web xác thực OTP
Webservice chứa dịch vụ xác thực OTP được xây dựng dựa trên thuật toán mật khẩu một lần dựa theo thời gian TOTP (được chỉ định trong RFC 6238). Nó sử dụng chung thuật toán và hàm mã hóa như trên ứng dụng Google Authenticator được cài trên máy người dùng.
Hình 4. Cơ chế xác thực của webservice
Cơ chế hoạt động của trình xác thực được diễn giải như sau:
- Để xác thực, người dùng cần nhập vào mã token được lấy từ ứng dụng Google Authenticator.
- Mã id định danh của người dùng sẽ được gửi kèm mã token này vào máy chủ xác
thực.
- Sau khi nhận được yêu cầu xác thực kèm dữ liệu của người dùng, máy chủ xác thực
sẽ tiến hành lấy khóa bí mật từ CSDL của người dùng kèm theo id người dùng
- Máy chủ xác thực sẽ so sánh mã token của người dùng nhập vào và mã token do chính máy chủ xác thực tính toán ra có trùng khớp hay không. Neu dữ liệu trùng khớp, quá trình xác thực hoàn tất.
2.3. Mô tả hệ thống hoạt động xác thực OTP tích hợp trên mobile banking
Hệ thống hoạt động bao gồm 5 thành phần chính: - Client: Bao gồm người dùng, ứng dụng mobile.
- Ứng dụng Google Authenticator: Nơi lấy mã OTP được sinh ra sau khi đăng ký. - Application Server (Máy chủ ứng dụng): Điều khiển tất cả các hoạt động ứng dụng
giữa những người sử dụng và các ứng dụng tầng cuối.
- Authentication Server (Máy chủ xác thực): Cung cấp trình xác thực cho hệ thống. - Database: Nơi lưu trữ thông tin người dùng, thông tin hệ thống.
Hình 5. Sơ đồ mô hình hoạt động hệ thống
Quy trình hoạt động của hệ thống xác thực:
Đối với yêu cầu đăng ký từ phía người dùng, client gửi yêu cầu lên Application Server để đăng ký xác thực TOTP. Application Server sẽ tiến hành gửi yêu cầu lên Authentication Server kèm theo thông tin người dùng bao gồm id, username để đăng ký. Authentication Server kiểm tra trong bộ nhớ cache xem tài khoản này đã đăng ký TOTP hay chưa, nếu chưa thì sẽ sinh ra khóa bí mật và trả về cho Application Server, Application Server trả về cho phía Client để người dùng có thể sử dụng ứng dụng Google Authenticator thực hiện thao tác nhập hoặc quét mã QR chứa khóa bí mật. Sau
Mô tả quy trình đăng kí dịch vụ xác thực
ST
T Tác nhân Nội dung thực hiện
HĐ
1 Người dùng Khi muốn thực hiện đăng kí hình thức xác thực đa nhân tố Google Authenticator trong việc thực hiện các giao dịch chuyển tiền hoặc thanh toán, người dùng chọn chức năng Đăng kí xác thực trong menu của app.
HĐ2 Hệ thống Thực hiện kiểm tra trong cơ sở dữ liệu xem tài khoản của khách hàng đã đăng kí hình thức xác thực hay chưa.
+ Neu tài khoản đã đăng kí, hệ thống hiển thị thông báo “ Quý khách đã đăng ký dịch vụ này”.
+ Nếu tài khoản chưa đăng ký, cho phép khách hàng chọn tiep tục để thực hiện đăng ký.
HĐ3 Người dùng Chọn Tiếp tục để xác nhận đăng ký.
HĐ4 Hệ thống Lấy id và username của tài khoản để sinh khóa bí mật hiển thị dưới dạng mã QR code hoặc một chuỗi kí tự văn bản. HĐ5 Người dùng Sử dụng ứng dụng Google Authenticator để quét mã QR
hoặc
nhập mã dưới dạng văn bản mà hệ thống đã trả ra HĐ6 Hệ thống Yêu cầu nhập mã xác thực của người dùng từ ứng dụng
Google Authrnticator thực hiện ở hoạt động 4.
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
khi người dùng nhập mã bí mật vào ứng dụng Google Authenticator, ứng dụng này sinh ra mã OTP mỗi 30 giây một lần.
Mỗi lần tiến hành xác thực, người dùng nhập mã OTP được lấy từ trong ứng dụng Google Authenticator, mã xác thực này sẽ được gửi lên Application Server và gửi yêu cầu xác thực lên Authentication Server. Authentication Server tiến hành kiểm tra thông tin người dùng trong bộ nhớ cache, nếu người dùng với id đã được đăng ký xác thực TOTP thì hệ thống sẽ lấy ra khóa bí mật từ id của người dùng được lưu trong
bộ nhớ và tạo ra một mã OTP với hàm mã hóa và tạo mã tương tự như trên ứng dụng Google Authenticator. Nó sẽ tiến hành đối chiếu mã vừa sinh ra này với mã được người dùng nhập vào. Nếu hai mã trùng nhau thì quá trình xác thực là thành công, ngược lại quá trình xác thực thất bại.
Nguyễn Thị Hồng Vân - K19HTTTA
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
2.4. Biểu đồ hoạt động
+ Nếu nhập sai mã, hệ thống yêu cầu nhập lại. + Nếu nhập đúng mã, chuyển sang hoạt động 8.
HĐ8 Hệ thống Lưu khóa bí mật và thông tin đăng ký vào cơ sở dữ liệu. HĐ9 Hệ thống Đăng kí thành công, hệ thống trả thông báo xác nhận đăng
ký
Bảng 1. Mô tả quy trình đăng kí dịch vụ xác thực
Mô tả quy trình hủy đăng kí dịch vụ xác thực
ST
T Tác nhân Nội dung thực hiện
Hình 6. Biểu đồ hoạt động quy trình đăng ký xác thực
HĐ
1 Người dùng Khi muốn thực hiện hủy đăng kí hình thức xác thực đanhân tố Google Authenticator trong việc thực hiện các giao dịch chuyển tiền, thanh toán người dùng chọn chức năng Huỷ đăng kí xác thực trong menu của app Mobile Banking. HĐ2 Hệ thống Hiển thị thông báo yêu cầu người dùng xác nhận có chắc
chắn đồng ý hủy đăng ký xác thực hay không? HĐ3 Người dùng + Xác nhận hủy đăng kí ->chuyển tới hoạt động 4
+ Không xác nhận hủy đăng ký -> kết thúc quy trình. HĐ4 Hệ thống Yêu cầu nhập mã xác thực của người dùng từ ứng dụng
Google Authrnticator.
HĐ5 Người dùng Nhập mã xác thực vào app mobile banking: + Nếu nhập sai mã, hệ thống yêu cầu nhập lại.
+ Nếu nhập đúng mã, chuyển sang hoạt động 8. hệ thống xóa thông tin đăng ký của người dùng khỏi cơ sở dữ liệu. HĐ6 Hệ thống Xóa thông tin đăng ký của người dùng khỏi cơ sở dữ liệu. HĐ7 Hệ thống Hủy đăng kí thành công, hệ thống trả thông báo xác nhận
Mô tả quy trình xác thực chuyển tiền
ST
T Tác nhân Nội dung thực hiện
HĐ1 Người dùng Nhập các thông tin của giao dịch chuyển tiền HĐ2 Hệ thống Thực hiện kiểm tra các thông tin đã hợp lệ chưa:
+ Neu chưa hợp lệ, hiển thị thông báo cho người dùng, quay lại hoạt động 1.
+ Nếu các thông tin đã nhập hợp lệ, chuyển tới hoạt động 3. HĐ3
Hệ thống Yêu cầu nhập mã xác thực của người dùng nhận được từ ứng
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
Hình 7. Biểu đồ hoạt động quy trình hủy đăng ký xác thực
Nguyễn Thị Hồng Vân - K19HTTTA 31
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
HĐ5 Hệ thống Lấy id của tài khoản
HĐ6 Hệ thống Lấy thông tin đã đăng kí dịch vụ từ cơ sở dữ liệu.
HĐ7 Hệ thống Sinh ra mã xác thực từ thông tin đăng kí của người dùng. HĐ8 Hệ thống Đối chiếu mã xác thực được sinh ra từ hệ thống và mã xác
thực người dùng nhập ở hoạt động 4:
+ Nếu trùng nhau, trả về thông báo xác nhận giao dịch thành công cho người dùng và kết thúc quy trình.
+ Nếu không trùng nhau, yêu cầu người dùng nhập lại mã ở hoạt động 4.
Bảng 3. Mô tả quy trình xác thực giao dịch chuyển tiền
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy 2.5. Biểu đồ ca sử dụng
Từ biểu đồ hoạt động chúng ta sẽ đi xây dựng biểu đồ ca sử dụng với mục đích cung cấp một cái nhìn tổng thể về những gì hệ thống làm và ai sẽ dùng nó. Đưa ra cơ
sở để xác định giao tiếp người - máy với hệ thống. Mô hình hóa các chuỗi hành động
mà hệ thống sẽ thực hiện nhằm cung cấp một kết quả nào đó giúp khách hàng có thể hiểu được và có thể giao tiếp được với hệ thống một cách tổng thể.
Hình 9. Biểu đồ ca sử dụng quy trình đăng ký xác thực
2.5.2. Quy trình hủy đăng ký xác thực
Hình 10. Biểu đồ ca sử dụng quy trình hủy đăng ký xác thực
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
2.5.3. Quy trình xác thực giao dịch chuyển tiền
Hình 11. Biểu đồ ca sử dụng quy trình xác thực chuyển tiền
TỔNG KẾT CHƯƠNG 2
Trong chương 2 khóa luận đã nêu ra thực trạng sử dụng Mobile Banking hiện nay và đưa ra bài toán cần triển khai, giới thiệu về công cụ sử dụng để giải quyết bài toán, từ đó đi vào phân tích hệ thống và cơ chế hoạt động của công cụ xác thực Google
Authenticator. Việc phân tích được diễn giải từ hệ thống web chung sau đó đi vào các thành phần chức năng cụ thể. Trong phần tiếp theo chương 3, khóa luận sẽ diễn giải cơ chế lập trình tạo nên hệ thống xác thực trên Mobile banking. Diễn giải demo kết quả đạt được và đưa ra đánh giá về hệ thống.
Request:
Bod
y: method String
Nhận 1 trong các giá trị sau {register, unregister, auth]
requestid String
Khóa luận tốt nghiệp GVHD: Ths. Nguyễn Thanh Thụy
CHƯƠNG 3: LẬP TRÌNH PHÁT TRIỂN, THỬ NGHIỆM DỊCH VỤ WEB XÁC THỰC OTP SỬ DỤNG GOOGLE AUTHENTICATOR TÍCH HỢP
VÀO ỨNG DỤNG MOBILE BANKING
3.1. Cơ chế lập trình dịch vụ web sử dụng trình xác thực GoogleAuthenticator Authenticator
3.1.1. Công cụ sử dụng
Với đề tài đưa ra, môi trường phát triển hệ thống bao gồm các thành phần như sau: - Hệ điều hành: Máy chủ xác thực có thể cài đặt trên hệ điều hành Windows
Server
hoặc hệ điều hành Linux. Để tối ưu nhất, nên xây dựng và cài đặt trên hệ điều hành
Linux vì nó đảm bảo độ bảo mật, tính ổn định và tin cậy cao hơn Windows Server.
- Hệ quản trị cơ sở dữ liệu: MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn
mở phổ
biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát
triển ứng dụng. Vì MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ
sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ
thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất
thích hợp cho các ứng dụng có truy cập CSDL trên internet.
- Ngôn ngữ lập trình: Như đã đề cập ở mục 2.2, webservice sử dụng ngôn ngữ lập
trình Java. Java là một ngôn ngữ lập trình đa năng mạnh mẽ, đơn giản và dễ học.
Nó được sử dụng để phát triển các ứng dụng máy tính để bàn và thiết bị di động,
Nguyễn Thị Hồng Vân - K19HTTTA
Bo dy: requested String ec String Success = "ũ" Error != "O" em String
Mò tả lỗi khi mã lỗi khác "0"
detail Object
STT Tên trường Kiểu dữ liệu Mô tả
T registerid String ID đăng ký của tài khoản
2 issuer String Tên gợi nhớ
3 type String Tên yêu cầu
STT Tên trường Kiểu dữ liệu Mô tả
T" type String Tên yêu cầu
2 imagebase64 String Ảnh mã QR dưới dạng mã hóa
Base64
Respone:
Tù)' vào mõi gia trị method sẽ có các detail tương ứng
Hình 12. Thiết kế cấu trúc dữ liệu REST API của webservice Đăng ký:
STT Tên trường Kiểu dữ liệu Mô tả
1 registerid String ID của tài khoản muốn hủy đăng ký
2 type String Tên yêu cầu
STT Tên trường Kiểu dữ liệu Mô tả
T" unregisterid String ID của tài khoản đã hủy đăng ký
2 type String Tên yêu cầu
STT Tên trường Kiểu dữ liệu Mô tả
T registerid String ID đăng ký của tài khoản