Erreur D'exécution de la requête CredStore
Je rencontre un problème en faisant des appels API à mon backend d'applications, chaque connexion invite maintenant avec
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
atyp = http;
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = http;
"r_Attributes" = 1;
srvr = "myappsurl.com";
sync = syna;
}
Je suis un peu perdu car je ne suis pas sûr de ce qui cause cela, ou de ce que CredStore fait même. À quoi sert CredStore dans iOS?
6 réponses
Cette erreur se produit lorsque vous essayez de récupérer un URLCredential
à partir de URLCredentialStorage
pour un inconnu URLProtectionSpace
.
par exemple
let protectionSpace = URLProtectionSpace.init(host: host,
port: port,
protocol: "http",
realm: nil,
authenticationMethod: nil)
var credential: URLCredential? = URLCredentialStorage.shared.defaultCredential(for: protectionSpace)
Produit
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = http;
"r_Attributes" = 1;
srvr = host;
sync = syna;
}
Donnez-lui des informations d'identification pour l'espace de protection:
let userCredential = URLCredential(user: user,
password: password,
persistence: .permanent)
URLCredentialStorage.shared.setDefaultCredential(userCredential, for: protectionSpace)
Et l'erreur disparaît la prochaine fois que vous essayez de récupérer les informations d'identification.
Je suis un peu perdu car je ne suis pas sûr de ce qui cause cela, ou quoi CredStore fait même. À quoi sert CredStore dans iOS?
Le stockage des informations d'identification sur iOS permet aux utilisateurs de stockez les informations d'identification basées sur un certificat ou un mot de passe sur le périphérique, temporairement ou définitivement, dans le trousseau.
Je soupçonne que vous avez une sorte d'authentification sur votre serveur principal et que ce serveur demande un défi d'authentification à votre application (pour lequel aucune information d'identification n'existe).
Il peut probablement être ignoré en toute sécurité car renvoyer nil à partir de URLCredentialStorage
est une réponse valide
C'est une erreur de transport, ajoutons l'autorisation de transport comme ceci dans le fichier plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Soyez prudent car cela permet la connexion à n'importe quel serveur à partir de votre application. En savoir plus sur la sécurité des transports App avant de continuer. Voir le commentaire de @kezi
Si vous obtenez cette erreur, lorsque vous utilisez AVPlayer, appelez simplement .play() sur le thread principal
J'ai modifié la chaîne qui contient L'URL pour résoudre ce problème:
var myUrl = "http://myurl.com"
myUrl = myUrl.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!
let url = URL(string: myUrl)
Dans mon cas, je n'initialisais pas le SDK Stripe avec la clé API.
STPPaymentConfiguration.shared().publishableKey = publishableKey
En cas d'opération de bande, si nous pouvons imprimer le journal des erreurs, c'est facile à comprendre.
print(error.debugDescription)
L'erreur peut également être causée par une stratégie de sécurité de contenu (CSP) qui peut être trop restrictive. Dans notre cas, nous avions besoin d'un CSP plus ou moins complètement ouvert et qui permet tout. Gardez à l'esprit que l'ouverture du CSP peut être un grand problème de sécurité (en fonction de ce que vous faites exactement dans l'application).