J'ai téléchargé mon site Web sur un hébergement Web et cette erreur est survenue.
' Une erreur s'est produite lors d'une opération cryptographique .'.
J'ai effectué des recherches et il semble que le cookie authentifié par le formulaire soit lié à la MachineKey (qui diffère lorsque vous utilisez Webhost).
J'ai trouvé une méthode qui devrait résoudre ce problème, mais l'erreur persiste.
CODE:
/// <summary>
/// This method removes a cookie if the machine key is different than the one that saved the cookie;
/// </summary>
protected void Application_Error(object sender, EventArgs e)
{
var error = Server.GetLastError();
var cryptoEx = error as CryptographicException;
if (cryptoEx != null)
{
FederatedAuthentication.WSFederationAuthenticationModule.SignOut();
Global.Cookies.FormAuthenticated Cookie = new Global.Cookies.FormAuthenticated();
Cookie.Delete();
Server.ClearError();
}
}
TRACE DE LA PILE:
[CryptographicException: Error occurred during a cryptographic operation.]
System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input) +115
System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.Unprotect(Byte[] protectedData) +59
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +9824926
Archive_Template.Main.resolveLoginUser(String sessionKey) in f:\Archive_Template\Archive_Template\Main.aspx.cs:481
Archive_Template.Main.OnPreInit(EventArgs e) in f:\Archive_Template\Archive_Template\Main.aspx.cs:52
System.Web.UI.Page.PerformPreInit() +31
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +335
Pour ceux qui n'ont pas résolu leur problème, il me manquait l'entrée "machineKey" pour chiffrer/déchiffrer dans mon fichier web.config
J'ai rencontré le même problème. Je viens d'effacer tous les les cookies du navigateur et les données en cache et tout a été corrigé.
Si vous utilisez l'authentification de formulaires. vous pouvez vous déconnecter lorsque vous attrapez l'exception et permettre à vos utilisateurs de se connecter et de créer un cookie valide
catch (CryptographicException cex)
{
FormsAuthentication.SignOut();
}
Cela est dû au manque de clé d'ordinateur, qui est utilisée comme clé symétrique pour le cryptage et le décryptage.
Pour configurer la machine dans IIS;
Accédez à votre application -> Clés de la machine -> Générer des clés
Je viens d'avoir cela aussi, j'ai supprimé les entrées de table UserTokenCaches de la base de données.
J'ai rencontré ce problème lorsque j'ai essayé de récupérer un cookie d'authentification par formulaires créé par une application ASP.NET 2.0 dans un projet d'API Web .NET4.5. La solution consistait à ajouter un attribut appelé "compatibilitéMode" au nœud "machineKey" dans le fichier web.config de mon API Web:
<machineKey
...
compatibilityMode="Framework20SP2"/>
Documentation: https://msdn.Microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx
Et à partir de la doc, voici les valeurs autorisées pour cet attribut:
protected void Application_Error(object sender_, CommandEventArgs e_)
{
Exception exception = Server.GetLastError();
if(exception is CryptographicException)
{
FormsAuthentication.SignOut();
}
}
dans votre Global.asax.cs, depuis Correction des erreurs dans Global.asax , tant que vous utilisez l'authentification par formulaire (nom d'utilisateur/mot de passe). Travaillé pour moi.
Je l'ai également expérimenté lors du développement d'une nouvelle solution et de l'exécution du site Web sur localhost. Définir la clé machine ne faisait aucune différence, mais la suppression de tous les cookies de localhost a résolu le problème.
Une autre option consiste à effacer les cookies du paramétrage du navigateur, ce qui permet de stocker de nouveaux cookies.
Si vous recevez cette erreur lors de la mise en œuvre de l'authentification unique (comme décrit ici http://www.alexboyang.com/2014/05/28/sso-for-asp-net-mvc4-and-mvc5-web-apps- shared-the-same-domain/ ), assurez-vous d’avoir le même cadre cible pour tous les projets. J'ai eu un projet avec .NET 4.0 et l'autre sur .NET 4.5.2.
Changer le premier en 4.5.2 a résolu le problème pour moi.
J'avais des erreurs de cryptage lors de la validation du jeton AntiForgery.
Je pense que c’est parce que je venais d’apporter des modifications de configuration du contrôle de sécurité à mon serveur afin de configurer le recyclage des applications en vue du recyclage lorsque la limite de mémoire virtuelle atteignait 1 000 000 kilo-octets.
C'était vraiment trop peu pour le recyclage de la mémoire virtuelle. L'utilisation de la mémoire privée peut être définie sur 1 000 000 Ko, mais la mémoire virtuelle doit disposer de beaucoup plus d'espace.
J'ai remarqué que mon application recyclait beaucoup trop souvent.
J'ai augmenté la limite de mémoire virtuelle à 10 000 000 Ko et ces erreurs ont disparu. Je pense que le pool d'applications s'est peut-être recyclé au moment où je remplissais le formulaire.
J'ai eu le même problème: MVC 5 ASP.Net Web Framework .net Framework 4.6.1
Solution: