iOS KeyChain 應用間共享資料

Jaly_xxx發表於2018-01-03

#1、KeyChain是什麼?

KeyChain的作用:可將使用者資訊加密儲存在鑰匙串中,保證使用者資訊的安全性;另外多個應用可通過keyChain共享使用者資訊。

#2、如何使用KeyChain?

1、蘋果官方封裝好了一個簡單的工具(我們需要匯入Security.framework ),用於存取、刪除keyChain的資料。 直接到github上搜尋 “KeychainItemWrapper”,找到星星較多的一個就行。例如:KeychainItemWrapper

KeychainItemWrapper的介面如下:

@interface KeychainItemWrapper : NSObject
{
    NSMutableDictionary *keychainItemData;		// The actual keychain item data backing store.
    NSMutableDictionary *genericPasswordQuery;	// A placeholder for the generic keychain item query used to locate the item.
    NSString* _identifier;
}

@property (nonatomic, strong) NSMutableDictionary *keychainItemData;
@property (nonatomic, strong) NSMutableDictionary *genericPasswordQuery;

// Designated initializer.
- (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;
- (void)setObject:(id)inObject forKey:(id)key;
- (id)objectForKey:(id)key;

// Initializes and resets the default generic keychain item data.
- (void)resetKeychainItem;

@end
複製程式碼
  • | - (id)initWithIdentifier: (NSString *)identifier accessGroup:(NSString *) accessGroup;

這個方法中:如果你想要在應用之間共享資訊,那麼你需要指定訪問組(keychain access group)。有同樣的訪問組的應用才能夠訪問同樣的keychain資訊

- (void)setObject:(id)inObject forKey:(id)key;
- (id)objectForKey:(id)key;
複製程式碼

這兩個方法,看名字就應該知道怎麼用了 只是,key不是隨便傳的, (id)kSecAttrAccount:儲存賬號, (id)kSecValueData:儲存密碼


2、利用第三方框架使用Keychain 推薦這個框架:SAMKeychain,星星較多,使用比較方便。

#3、KeyChain-應用間共享資料 ##1、注意點:

1、相同的bundle id:相同bundle解釋就是:比如這裡有兩個應用程式: A應用程式使用的provision對應的 bundle id是 com.jaybin.keychain1,B應用程式使用的provision對應的 bundle id是 com.jaybin.keychain2 。那麼這兩個應用程式就可以共享keychain資料。 2、開啟Keychain Sharing許可權

keyChain Sharing許可權.png
如圖開啟Keychain Sharing開關,設定好正確的 Keychain Group,設定好後應該會生成一個檔案,如下圖

plist.png

關於應用間共享資料的內容,我是參考其他文章,這一篇講解的不錯:http://blog.csdn.net/he_jiabin/article/details/43764637

相關文章