2014-11-13 14 views
7

Tôi muốn lưu trữ thông tin xác thực người dùng một cách an toàn trong Keychain iOS, nhưng tôi chỉ muốn người dùng có thể sử dụng vân tay của họ để truy xuất mục Keychain. Có quy trình làm việc nào để gọi cảm biến ID cảm ứng để truy xuất các mục Keychain có khả năng loại bỏ mật mã mở khóa hoặc không bị rơi lại mật mã không?Có cách nào để sử dụng ID cảm ứng với Keychain iOS nhưng không nhắc mật khẩu người dùng không?

Tôi đã triển khai các phương pháp được xác định trong phiên WWDC trên Touch ID và Keychain, nhưng tôi không muốn quay lại mật mã thiết bị giống như trong demo của chúng. Tôi muốn người dùng đăng nhập theo truyền thống khi quét vân tay không thành công.

Trả lời

0

Không có cách nào để vô hiệu hóa cơ chế dự phòng bằng cách sử dụng mật mã trong tích hợp Keychain TouchID.

+0

May mắn thay, điều này đã được giải quyết trong iOS 9. Btw, cảm ơn bạn rất nhiều vì KeychainAc tuyệt vời thư viện cess! =) – skozin

4

@kishikawa-katsumi là đúng, trong iOS 8 không có cách nào để vô hiệu hóa dự phòng mật mã. Cờ kiểm soát truy cập kSecAccessControlUserPresence làm cho một mục có thể truy cập được sau khi xác minh ID hoặc mã xác thực và thậm chí không yêu cầu ID cảm ứng khả dụng.

Nhưng điều này đã được cải thiện trong iOS 9. Cờ liên quan đến ID liên quan Two Touch, kSecAccessControlTouchIDAnykSecAccessControlTouchIDCurrentSet, have been added. Vì vậy, bạn cần sử dụng một trong hai cờ này khi tạo đối tượng điều khiển truy cập cho mục Keychain (với chức năng SecAccessControlCreateWithFlags) và gán đối tượng đó cho thuộc tính kSecAttrAccessControl khi thêm mục với chức năng SecItemAdd.

an example from Apple chứng minh điều này; xem phương thức addTouchIDItemAsync.

Xem thêm this post cho một sự xem xét những thay đổi bảo mật liên quan khác trong iOS 9.

5

Bạn có thể tùy chỉnh các nút "Enter Password" sử dụng tài sản localizedFallbackTitle

LAContext *myContext = [[LAContext alloc] init]; 
myContext.localizedFallbackTitle = @"sign in traditionally"; 

Nếu bạn muốn loại bỏ các dự phòng , chỉ cần đặt thuộc tính như thế này

myContext.localizedFallbackTitle = @""; 
Các vấn đề liên quan