Xác thực sử dụng vân tay trong Android

462

Đã qua rồi những ngày bạn phải nhập thủ công tên người dùng và mật khẩu để đăng nhập vào một số ứng dụng Android. Bạn không những phải nhập một cách thủ công mà nó còn là một quá trình rất tốn thời gian và mang lại trải nghiệm không tốt cho người dùng. Ngoài ra, nếu bạn quên mật khẩu hoặc tên người dùng thì bạn sẽ phải khôi phục nó. Nhưng nếu chúng ta có thể sử dụng Fingerprint (Dấu vân tay) để xác thực thì sẽ không cần phải nhớ tên người dùng hay mật khẩu nữa. Ngoài ra, không ai có thể có cùng một dấu vân tay, vì vậy, chúng ta không cần phải lo lắng về tính xác thực.

Tổng quan chung

Với sự ra đời của Android 6.0 (Android M), đã có một số lượng thay đổi đáng kể đối với các API, một trong số đó là Xác thực vân tay. Giờ đây, chúng ta có thể dễ dàng triển khai Xác thực vân tay trong ứng dụng của mình trên các thiết bị có cảm biến vân tay. Toàn bộ quá trình Xác thực vân tay có thể được tóm tắt thành các bước dưới đây:

  1. Yêu cầu cấp phép Xác thực vân tay trong Manifest.
  2. Vì dấu vân tay chỉ có thể được áp dụng trên các thiết bị có màn hình khóa được bảo vệ bằng mã PIN, pattern hoặc mật khẩu. Vì vậy, chúng ta phải kiểm tra xem màn hình khóa của thiết bị có được bảo vệ bằng mã PIN, pattern hoặc mật khẩu hay không.
  3. Sau đó, tạo một thể hiện của lớp FingerprintManager.
  4. Bạn phải có quyền truy cập vào khu vực lưu trữ được sử dụng để lưu trữ các khóa mã hóa trên thiết bị Android. Vì vậy, ta cần tạo một thể hiện của Keystore để có quyền truy cập vào Keystore container của Android. Sau đó, tạo một khóa mã hóa với lớp KeyGenerator và lưu trữ nó trong Keystore container.
  5. Với sự trợ giúp của khóa được tạo và lưu trữ trong Keystore container, hãy khởi tạo thể hiện của lớp Cipher và sử dụng thể hiện này để tạo CryptoObject và gán nó cho FringerprintManager mà bạn đã tạo trước đó.
  6. Gọi phương thức xác thực của lớp FingerprintManger và thực hiện các phương thức để xử lý các callback.

Triển khai

Đầu tiên, hãy tạo một dự án mới trong Android Studio và đặt tên theo dự án của bạn. Ngoài ra, hãy đặt API tối thiểu thành 23, tức là Android 6.0.

Sau khi tạo dự án, vui lòng đảm bảo rằng thiết bị của bạn có một số loại xác thực khác ngoài dấu vân tay vì Xác thực vân tay sẽ chỉ hoạt động trong trường hợp đó.

Thêm quyền sử dụng dấu vân tay trong tệp AndroidManifest.xml của bạn:

Tiếp đến là code giao diện cho ứng dụng, code cho tệp activity_main.xml:

Xác thực vân tay sử dụng KeyguardManager và FingerprintManager. Vì vậy, trong hàm onCreate(), bạn cần khởi tạo hai dịch vụ này:

Nhiệm vụ tiếp theo của chúng ta là kiểm tra xem thiết bị có đang được bảo vệ bằng mã PIN hay mật khẩu không. Ngoài ra, nếu nó được bảo vệ bằng mật khẩu thì chúng ta phải kiểm tra xem đã có dấu vân tay được liên kết với thiết bị hay chưa. Vì vậy, chúng tôi sẽ thực hiện các kiểm tra này trong phương thức checkLockScreen():

Bây giờ, chúng ta phải tạo một khóa mã hóa sẽ được lưu trữ trong Keystore System của Android. Vì vậy, chúng ta phải có được quyền truy cập của Keystore và sau đó tạo khóa mã hóa với sự trợ giúp của phương thức generateKey():

Như vậy, chúng ta đã tạo được key. Nhiệm vụ tiếp theo là khởi tạo mật mã sẽ được sử dụng cho CryptoObjectCryptoObject này sẽ được sử dụng trong quá trình xác thực dấu vân tay. Vì vậy, hãy tạo một phương thức gọi là initCipher() trong tệp MainActivity.kt:

Tiếp đến là lớp FingerprintHelper:

Cuối cùng, trong phương thức onCreate của MainActivity, chúng ta phải tạo một thể hiện của lớp FingerprintHelper để sử dụng phương thức startAuth:

Chạy ứng dụng trên thiết bị của bạn và nhớ đảm bảo nó có cảm biến vân tay. Ngoài ra, hãy thử các tình huống khác nhau. Ví dụ: xóa tất cả dấu vân tay liên quan đến thiết bị của bạn, xóa mật khẩu của thiết bị, …

Nguồn: https://blog.mindorks.com/authentication-using-fingerprint-in-android-tutorial

Có thể bạn quan tâm:

Xem thêm việc làm Android Developer trên TopDev

TopDev via viblo

  Xây dựng giao diện Android với FlexBox
  Cơ bản về Android App Bundle
SHARE