[英]How to use iOS Keychain to stored an OAuth token on iPhone?
我將使用RestKit使用OAuth訪問Web api。 在RestKit文檔版本中 :
我們強烈建議您使用iOS鑰匙串或其他安全存儲方式保留access_token,refresh_token,clientId和clientSecret。
如何使用iOS Keychain
存儲秘密令牌?
更新:這個問題被否決了。 可能我的問題不夠清楚。 我知道有iOS鑰匙串和API。 我的問題是在應用交付之前,如何將token
存儲在一個秘密的地方(使用iOS鑰匙串或其他加密庫),而沒有將純文本版本存儲在其他地方(在代碼或plist中)。 由於它是一個api令牌,不應由用戶輸入,因此我該如何首先初始化令牌。
我們將各種組件(accessToken,refreshToken等)存儲在符合NSCoding協議的令牌類中。 然后,我們將對象歸檔並將其作為字符串存儲在鑰匙串中。
我們的TokenModel協議如下所示:
@protocol TokenModel <NSCoding, NSObject>
@property(nonatomic, strong, readonly) NSString *accessToken;
@property(nonatomic, strong, readonly) NSDate *expirationDate;
@property(nonatomic, assign, readonly) NSTimeInterval expiresIn;
@property(nonatomic, strong, readonly) NSString *refreshToken;
@property(nonatomic, strong, readonly) NSString *tokenType;
- (BOOL)isAccessTokenExpired;
@end
我們使用鑰匙串服務幫助程序,使我們可以像訪問NSUserDefaults一樣簡單地訪問鑰匙串,同樣的要求是存儲的對象必須符合NSCoding協議。
@protocol KeychainService <NSObject>
- (id)objectForKey:(id)key error:(NSError * __autoreleasing *)error;
- (BOOL)setObject:(id)object forKey:(id)key error:(NSError * __autoreleasing *)error;
- (BOOL)removeObjectForKey:(id)key error:(NSError * __autoreleasing *)error;
@end
您在此處擁有文檔,但我強烈建議您不要在真正敏感的數據(例如銀行數據或財務信息)的情況下使用iOS鑰匙串,因為它充滿了安全漏洞,存在許多利用漏洞的漏洞,允許黑客訪問該鑰匙串(一旦使用越獄的ssh遠程授予對設備的訪問權限,或者直接訪問iPhone,就可以授予該鑰匙串)。
為了存儲非敏感數據,例如access_token,可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.