簡體   English   中英

如何使用iOS鑰匙串在iPhone上存儲OAuth令牌?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM