在iOS上存储身份validation令牌 – NSUserDefaults与钥匙串?

当用户login到服务时,应该存储令牌的位置是哪个? 我没有保存密码(显然我在哪里使用钥匙串),但只是令牌。 很多地方都说使用NSUserDefaults,但StackOverflow上的一些人似乎对Keychain非常热衷。

是NSUserDefaults罚款?

我强烈build议你使用钥匙串 – 这正是Facebook做他们的会话令牌存储。

NSUserDefaults不安全或encryption – 它可以很容易地打开和阅读,无论是在设备上,当同步到Mac。 所以,虽然用户的默认值是一个喜好和configuration信息的好地方,但它不是一个敏感的好地方,如密码。

会话令牌应该几乎总是和密码一样对待,所以你应该把它们安全地存储在钥匙串中,在那里它们将被encryption。 苹果有一些示例代码( GenericKeychain ),显示了一个基本的实现,你可以通过searchStackOverflowfind其他的例子。 希望这可以帮助你。

值得一提的是使用Lockbox 。 它真的简化了与钥匙链的接口。