2017-09-25 12 views
1

J'ai créé une nouvelle question à cause de cela plus lié à Xamarin. Je cherchais un moyen d'identifier de manière unique un appareil dans iOS lorsque je suis tombé sur ce dans StackOverflow. Il m'a fallu un certain temps pour comprendre comment ajouter quelque chose dans Keychain et je suis tombé sur ce question. Après tout le trébucher, j'ai trouvé this morceau de code pour générer le jeton unique.Xamarin iOS ajoute de la valeur à KeyChain qui peut être consulté par toutes les applications sur le périphérique

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

Maintenant, le problème est que même si j'ajoute cette entrée au trousseau, je suis incapable de le trouver. Je suis également intéressé de savoir si j'utilise kSecAttrAccessGroupToken correctement.

Mon fichier 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> 

Répondre

1

kSecAttrAccessGroupToken est éditable uniquement par CryptoTokenKit pilotes de cartes à puce. Les applications peuvent interroger le trousseau en utilisant cet attribut afin de trouver des éléments stockés sur une carte à puce particulière. Cet attribut n'est pas destiné à un autre usage.

Il y avait un bogue dans la bêta 10.3.x qui permettait à n'importe quelle application d'y écrire, mais qui a été corrigée.

Re: https://forums.developer.apple.com/thread/72271

+0

Merci de répondre. Avez-vous regardé le Gist que j'ai posté? J'ai fait quelques changements et ça marche maintenant. Donc, quand je désinstalle l'application et ré-installer, je suis toujours en mesure d'obtenir le Guid. Mais maintenant que vous dites ceci, est-ce que je fais quelque chose contre la politique d'Apple? –

+0

@MadhavShenoy 1) Vous faites cela sur iOS 10.2 ou inférieur? 2) testez-vous sur un appareil physique? (les simulateurs ne suivent pas les règles d'exécution) – SushiHangover

+0

Ok, laissez-moi tester ceci sur un périphérique. Cela signifie donc qu'il n'y a aucun moyen d'identifier de façon unique un périphérique sur iOS ... –