标签: uickeychainstore

从Keychain检索数据时,有一小部分用户获得errSecItemNotFound

我有一个iOS应用程序,在Keychain中存储访问令牌.在过去的几个月里,我注意到大约2%的用户在尝试检索令牌时获得了errSecItemNotFound.

所有相关的StackOverflow线程都指向后台任务是罪魁祸首(iOS KeyChain不从后台检索值)或在查询字符串中包含无效参数(Keychain:Item报告为errSecItemNotFound,但在添加时接收errSecDuplicateItem).

我正在使用kSecAttrAccessibleAfterFirstUnlock,因此后台任务应该能够正常访问Keychain.

此外,搜索查询如下所示:

NSMutableDictionary *query = [[NSMutableDictionary alloc] init];
[query setObject:(__bridge id)kSecClassGenericPassword forKey:(__bridge id)kSecClass];
[query setObject:(__bridge id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData];
[query setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit];
[query setObject:service forKey:(__bridge id)kSecAttrService];
[query setObject:key forKey:(__bridge id)kSecAttrGeneric];
[query setObject:key forKey:(__bridge id)kSecAttrAccount];
Run Code Online (Sandbox Code Playgroud)

(设置kSecAttrGeneric可能是多余的,但它不会影响查询的结果)

为了记录,我遇到了SSKeyChainUICKeychainStore的这个错误.

任何提示都将受到高度赞赏:]

keychain ios sskeychain uickeychainstore

6
推荐指数
1
解决办法
879
查看次数

KeyChainStore返回34018错误

我正在尝试在我的iOS应用程序中实现KeyChain共享,以在不同的iOS应用程序之间共享密码.

我正在使用该库UICKeyChainStore来实现此目的.

AppDelegate.m(这个有效)

self.keychainStore = [UICKeyChainStore keyChainStoreWithService:@"PasswordService" accessGroup:@"group_name"];
self.keychainStore[@"password"] = @"abcd1234";
NSLog(@"%@", self.keychainStore[@"password"]);
Run Code Online (Sandbox Code Playgroud)

在我的ViewController的ViewDidLoad方法中,相同的代码只是在控制台中打印(null).

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.keychainStore[@"p2"] = @"1234";
NSLog(@"%@", appDelegate.keychainStore[@"p2"]);
Run Code Online (Sandbox Code Playgroud)

当我深入挖掘库时,抛出的错误消息是:

Error Domain = com.kishikawakatsumi.uickeychainstore Code = -34018"发生了安全错误." UserInfo = 0x174e76540 {NSLocalizedDescription =发生了安全错误.}

keychain ios uickeychainstore

5
推荐指数
0
解决办法
379
查看次数

标签 统计

ios ×2

keychain ×2

uickeychainstore ×2

sskeychain ×1