mardi 30 janvier 2018

L'identification à deux facteurs pour les anciens appareils Apple

Si vous avez déclenché l'identification à deux facteurs sur votre iPhone (Réglages, [votre nom], Mot de passe et sécurité, Identification à deux facteurs) vous aurez quelques problèmes de connexion à votre compte iCloud sur des anciens appareils comme sur mon iPad 1 qui tourne sous iOS 5.1.1.


Après avoir appelé le support d'Apple, voici la solution simple mais qu'il fallait connaitre :


- Sur l'ancien appareil (ici iPad 1 iOS 5.1.1), allez dans Réglages, iCloud, Compte, saisissez votre mot de passe sans appuyer sur le bouton Terminé :



- Allez, avec un appareil récent (votre iPhone ou votre MacBook - démonstration ici sur mon MacBook) sur Préférences Système, iCloud, Détails du compte, Sécurité, appuyez sur le bouton Recevoir un code de validation :



- Revenez sur votre ancien appareil et saisissez le code de validation à la suite de votre mot de passe, appuyez sur le bouton Terminé. Faites cette procédure à chaque fois que, sur l'ancien appareil, le système vous demande de saisir votre mot de passe.


Pour générer le code de validation à partir de votre iPhone : Réglages, [votre nom ], Mot de passe et sécurité, Obtenir un code de validation :



En conclusion : contrairement aux mauvaises langues qui disent qu'Apple veut que vous changiez sans cesse d'appareil, la démonstration est faite, une fois de plus, que l'on peut garder son appareil Apple bien plus longtemps que la concurrence, de plus le support Apple a été extrêmement humain, de qualité et a réglé mon problème.

mercredi 24 janvier 2018

Prendre en compte TLS 1.2 en ASP.NET

Si vous rencontrez cette erreur :

The underlying connection was closed: An unexpected error occurred on a receive.

en essayant de faire un paiement PayPal avec ce code : 

WebRequest request = WebRequest.Create("https://api-3t.paypal.com/nvp");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.ToString().Length;
var sw = new StreamWriter(request.GetRequestStream());
sw.Write(postData.ToString());
sw.Close();

WebResponse response = request.GetResponse();

(pour le code complet d'un paiement PayPal en asp.net voir cet article : http://ghislainmesse.blogspot.fr/2016/07/integrer-le-paiement-paypal-dans-un.html)

C'est que votre serveur ne prend pas en compte TLS 1.2.

Soit vous installez asp.net 4.5 ou supérieur, soit vous ajoutez cette ligne en début de code :

protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        ….
}

P.S. : ne pas oublier d'ajouter cette clause dans l'entête du code : using System.Net;