存储用于脱机身份验证的令牌

时间:2017-09-08 10:10:32

标签: ios security authentication storage

我正在开发一个需要用户登录才能使用它的应用程序。用户应该只能在连接到互联网时登录。当用户登录时,应该在设备上存储令牌,允许脱机使用应用程序而无需再次登录。我基本上想要检查是否存在此令牌,如果是,则将用户带到应用程序,否则返回登录屏幕。此外,此令牌应在一段时间后过期。

问题是,是否存在一种存储令牌的方法,该方式将在24小时之后过期,用户无法以任何方式篡改或欺骗系统(例如,如果令牌有时间戳)并且用户更改设备时间)。令牌应该在用户未连接到互联网的情况下到期,这样用户将无法永久使用该应用程序而无需每隔一段时间重新验证一次。

虽然看起来很简单,但我找不到这个问题的答案。我研究了OAuth和NSHTTPCookie等技术,但这些似乎与在线身份验证有关,而我正在尝试在离线设置中对用户进行身份验证。

1 个答案:

答案 0 :(得分:0)

您可以使用钥匙串,这将是最安全的选择。

你可以使用" SwiftKeychainWrapper"

当用户验证>>将令牌保存到钥匙串和时间戳。

let success: Bool = KeychainWrapper.standard.set("TOKEN", forKey: "authKey")
let success: Bool = KeychainWrapper.standard.set("TIMETAMP", forKey: "timeKey")

对于脱机身份验证用户密钥和时间戳组合,以检查是否授予用户访问权限...

let authToken: String? = KeychainWrapper.standard.string(forKey: "authKey")
let timeToken: String? = KeychainWrapper.standard.string(forKey: "timeKey")

时间过后,只需从钥匙串中取出......