使用Apple Touch ID登录外部数据库

时间:2016-09-12 11:33:36

标签: ios swift touch-id

我有一个用Swift制作的iOS应用程序,这是一个小社交网络。用户可以使用登录/密码连接,我将其保存在私人服务器上的数据库中。我想实现TouchID以帮助他们更快地登录。但是,我的用户'帐户未与其Apple ID相关联。

// Touch ID button has been clicked
func touchIDButtonClicked() {
    print("touchIDButtonClicked");

    //Is Touch ID hardware available & configured?
    if(authContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error:&error))
    {
        //Perform Touch ID auth
        authContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "Connect to the network with your fingertips", reply: {(wasSuccessful:Bool, error:NSError?) in

            if(wasSuccessful)
            {
                //User authenticated
                print("OK");
                // Log the user
            }
            else
            {
                //There are a few reasons why it can fail, we'll write them out to the user in the label
                print("NO");
               // Tell the user to use his password
            }

        })

    }
}

我正在寻找的概念解决方案不仅仅是技术解决方案。我已经研究过TouchID了。有人能帮助我吗?

2 个答案:

答案 0 :(得分:6)

Touch ID无法识别某人(无法告诉您是用户1还是用户2)。它验证一个人(电话的所有者)。

因此您无法单独使用Touch ID登录。您可以使用它,避免输入相同的凭据。

所以它会像这样工作:

  1. 第一次,关于用户ID和密码,并进行常规登录
  2. 询问用户是否希望使用Touch Id进行访问。如果是这样,请安全地存储用户ID和密码(或者更好的是,引用用户的令牌)。
  3. 然后,在随后使用该应用程序时,不要询问用户ID和密码,只询问Touch ID,如果没有,则重新使用保存的凭据。否则请返回1.

答案 1 :(得分:-1)

鉴于用户名在您的数据库中是唯一的,您应该信任TouchId并仅通过用户名登录...顺便说一下,我的家庭银行应用程序的工作方式至少是低风险,而不是付款,功能

经过一番思考后,我意识到它根本不确定,直到你没有实现一些额外的架构机制,以确保登录来自你的应用程序

一个好的解决方案可以是使用identifierForVendor在用户名,app和设备之间建立强大的关联,方法是将其存储在数据库中并在登录时检查它