使用身份验证令牌或电子邮件和密码自动登录

时间:2018-12-19 00:14:20

标签: ios authentication login

我的应用程序登录通过向服务器发送带有登录信息(电子邮件和密码)的http发布请求,接收身份验证令牌,然后发送回auth令牌以获取加载在配置文件页面上的用户信息来工作

我不确定如何构建自动登录过程。我正在考虑将auth密钥存储在钥匙串中,并通过使用存储的密钥向服务器发出请求来开始每次打开应用程序,以检索配置文件信息。

这是明智的吗?还是存储电子邮件和密码,并使用它们进行自动登录过程更好?

可以将身份验证密钥永久归因于用户信息吗?

2 个答案:

答案 0 :(得分:0)

要在iOS上存储安全信息,请使用Keychain API。 Apple的钥匙串已经可以对您的应用程序存储在钥匙串中的数据进行加密和解密。钥匙串将通过手机(即密码/ TouchID / FaceID)进行锁定/解锁。过去,我曾开发过几个使用钥匙串保存用户密码的应用程序。我使用了一个名为PDKeychainBindings的包装库。不知道它是否仍然受支持。但是您可以在Github上找到大量包装Keychain API的库。

我相信我每天使用的一些金融应用程序都使用Keychain来存储我的密码。我与他们的经验是,我通常输入一次密码,然后他们向我提供将来使用FaceID / TouchID的选项。在某个时间点(例如,我上次输入密码以来的60天),它们使令牌无效,并迫使我重新输入密码,然后使用FaceID重新进行身份验证以在将来自动登录。您可以执行类似的操作在iOS应用中保存密码或其他敏感信息。

  

可以将身份验证密钥永久归因于用户信息吗?

我建议您不要这样做。在处理密码或身份验证时,最好让令牌在特定时间段后过期。这样,您始终可以确保合适的用户有权访问合适的数据。

答案 1 :(得分:0)

最佳现代方法:

让我解释在应用程序内部处理用户授权和令牌管理的最佳方法。

1-应用秘密密钥-硬编码值Ex:AppABC
2-应用使用者键-硬代码值,例如:ConABC
3-应用令牌-任何硬代码令牌,例如:127shdhgagsheydhsjashsye747ehd

A)使用api通过发送应用程序秘密密钥,应用程序使用者密钥和硬编码令牌(任何哈希密钥)来检索新的应用程序令牌。每隔30天,您需要点击自动刷新api以获取最新的应用令牌。

B)现在,在登录api中发送未过期的应用令牌,并且您是从上述情况生成的,并通过应用令牌传递用户名和密码,并在api响应中,您将收到授权应用令牌可以存储在其他任何api中用于授权的应用程序首选项中,并将您的用户视为登录用户。

现在,如果您需要获取登录用户的详细信息,只需传递该授权的应用程序令牌,而普通api只是该应用程序令牌。