Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local Authentication #304

Open
wants to merge 25 commits into
base: develop
Choose a base branch
from
Open

Local Authentication #304

wants to merge 25 commits into from

Conversation

mattrubin
Copy link
Owner

@mattrubin mattrubin commented Mar 9, 2019

Based off of #219, this PR adds a "screen lock" feature which hides the tokens by default when the app launches and whenever it resigns active. The app then prompts for Face ID, Touch ID, or passcode authentication when the app becomes active.

This PR is ready to be merged for beta testing, but there are several known places this feature can be improved before release:

  • A toggle to enable/disable this feature on the settings screen.
  • Improved UI and explanation on the lock screen.
  • Possibly, the use of a separate window for the lock screen, rather than a modal view controller.
  • Thorough testing on devices with and without various combinations of Face ID, Touch ID, or passcode.
  • Possibly, the use of security features of the Keychain API to make the stored tokens only accessible to the app after authentication has succeeded.
  • Improved UX design for the case where the user disables Face ID, Touch ID, or passcode while the app is running (or is not running but has screen lock enabled in its settings), leaving the app with no system-provided authentication mechanism.

beaucollins and others added 20 commits October 27, 2017 13:50
- Adds Component that:
  - Checks if device can use LocalAuthentication
  - Checks if a successful auth challenge has occurred

Given that LocalAuthentication is available on the device:

When the application becomes foreground after launching a privacy screen is presented. A successful
LocalAuthentication dismisses the privacy screen.

When the application enters the background state the privacy screen is presented. This prevents
tokens from being displayed during app switching.

None of the keychain items are using LocalAuthentication for encryption. This is purely UI related
so the security/encryption of the keychain items have not been changed by this feature.

Tokens are still readable/displayable by the app no matter what the state of the LocalAuthentication
challenge is.
Face ID uses the NSFaceIDUsageDescription from Info.plist, but if Face ID fails and falls back to manual password entry, this string is used.
@mattrubin mattrubin added this to the 2.2 milestone Mar 9, 2019
@savyyy001

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants