Xamarin iOS为KeyChain增加了价值,可以被设备上的所有应用访问

时间:2017-09-25 01:47:18

标签: ios xamarin xamarin.ios keychain

我为此创建了一个新问题,因为这与Xamarin有更多联系。当我在StackOverflow中偶然发现question时,我正在寻找一种在iOS中唯一标识设备的方法。我花了一段时间才弄清楚如何在Keychain中加入任何东西,我偶然发现了question

在所有绊脚石之后,我想出了this段代码来生成唯一令牌。

var s = new SecRecord(SecKind.GenericPassword)
            {
                AccessGroup = "kSecAttrAccessGroupToken",
                ValueData = NSData.FromString(value),
                Generic = NSData.FromString(key)
            };
            SecKeyChain.Add(s);

现在的问题是,即使我将此条目添加到钥匙串,我也无法找到它。我也很想知道我是否正确使用了kSecAttrAccessGroupToken。

我的Enlistments.plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>my app id</string>
        <string>kSecAttrAccessGroupToken</string>
    </array>
</dict>
</plist>

1 个答案:

答案 0 :(得分:1)

  

kSecAttrAccessGroupToken只能由CryptoTokenKit智能卡驱动程序写入。应用可以使用该属性查询钥匙串,以便查找存储在特定智能卡上的项目。此属性不适用于任何其他用途。

10.3.x测试版中存在一个错误,允许任何应用也写入,但已修补。

回复:https://forums.developer.apple.com/thread/72271