FormsAuthentication probème

lino03 Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 28 décembre 2007 - 27 déc. 2007 à 14:41
lino03 Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 28 décembre 2007 - 28 déc. 2007 à 09:56
Bonjour,
Je voudrais savoir si quelqun a déjà eu des problèmes avec la fonction de décryptage de l'objet "FormsAuthentication".
Mon problème est que la chaine cryptée que je passe en paramètre génére une exception de type "bad data".
J'ai fait quelques recherches en pensant que la chaine cryptée etait invalid ou corrompue mais sans succès.
Y aurait il pas une méthode ou autre pour vérifier la chaine passée en paramètre pour je puisse faire le test avant le passage à la fonction de décryptage??

Merci

6 réponses

gilletcsteph Messages postés 39 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 mai 2008
27 déc. 2007 à 15:09
On est d'accord que tu parles de FormsAuthentification.HashPasswordForStoringInConfigFile ?


un petit bout de code stp ...
0
lino03 Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 28 décembre 2007
27 déc. 2007 à 16:07
L'erreur se situe au niveau de la fonction  FormsAuthentication.Decrypt(string encryptedTicket) et voici l'erreur que j'ai :
 
"Error Source : mscorlib

Error Methode : Int32 DecryptData(Byte[], Int32, Int32, Byte[] ByRef, Int32, System.Security.Cryptography.PaddingMode, Boolean)

Error Message : Le remplissage n'est pas valide et ne peut pas être supprimé.

Error
Stack Trace : à
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[]
inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]&
outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean
fLast) à
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[]
inputBuffer, Int32 inputOffset, Int32 inputCount) à
System.Security.Cryptography.CryptoStream.FlushFinalBlock() à
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean
fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length,
Boolean useValidationSymAlgo) à
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean
fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length) à
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket)
à _Default.Page_Load(Object sender, EventArgs e) dans
f:\MyDev\DevPerso\Default.aspx.cs:ligne 75"

J'ai essayé plusieur clés différentes(en tronquant certaines et j'obtient ce message ou en passant une chaine vide ou null).

Merci
0
gilletcsteph Messages postés 39 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 mai 2008
27 déc. 2007 à 16:43
Tu aurais pas aussi le code que tu as écrit ?

Un encryptage / decryptage simple :

//Ticket d'authentification, sans persistance, timeout 10 minutes

FormsAuthenticationTicket myTicket=
new
FormsAuthenticationTicket(user,
false, 10);

//Encryptage du ticket
String myTicketCrypt =
FormsAuthentication.Encrypt(ticket);

...

//Decryptage du ticket
myTicket =
FormsAuthentication.Decrypt(myTicketCrypt );
0
lino03 Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 28 décembre 2007
27 déc. 2007 à 17:31
Voici mon code :

               FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket( 1,
                                                                              "",
                                                                             DateTime.Now,
                                                                              DateTime.Now.AddDays( 1 ),
                                                                              false,
                                                                              null,
                                                                             "" );

string EncryptedTicket = FormsAuthentication.Encrypt( Ticket );

                if ( EncryptedTicket != null && EncryptedTicket != string.Empty )
                {
                //check for the string format
                FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(EncryptedTicket );
                }
Par contre j'aimerias savoir si il existe une fonction pour controller la chaine cryptée avant de la passée à la fonction de décryptage??
(j'ai essayé avec reflector  de faire un reverse de la fonction FormsAuthentication.Encrypt(string s) mais il faut passer un temps fou pour tout re-coder les classes.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gilletcsteph Messages postés 39 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 22 mai 2008
27 déc. 2007 à 18:21
Avec le code que tu me donnes tu ne stocke rien dans ton ticket, tu a mis la valeur 'null' pour les données à stocker dans le cookie...

Est-ce normal ?
0
lino03 Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 28 décembre 2007
28 déc. 2007 à 09:56
Y a une erreur ,c'est pluôt celaque j'ai :
        FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket( 1,
                                                                                "",
                                                                                DateTime.Now,
                                                                                DateTime.Now.AddDays( 1 ),
                                                                                false,
                                                                                plaintext,
                                                                                "" );
Mais l'erreur vient de la fonction de décryptage : "bad data" ou "message = "invalid value for the encryptedTicket paramter"
ou
System.Security.Cryptography.CryptographicException: Le remplissage n'est pas valide et ne peut pas être supprimé
0
Rejoignez-nous