Si vous activez l'option de stratégie de sécurité "Utiliser les algorithmes compatibles FIPS pour le cryptage, le hachage et la signature" dans Windows, tenter d'utiliser plusieurs classes cryptographiques dans .NET Framework se traduira par une exception InvalidOperationException. Par défaut, ASP.NET utilise AES pour chiffrer le blob ViewState, de sorte qu'il échoue. Vous pouvez contourner cela en ajoutant une clé comme ceci à web.config:Est-ce que ASP.NET ScriptManager peut être conçu pour fonctionner avec la politique de sécurité Windows FIPS?
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
Et cela vous couvre pour l'utilisation de base ASP.NET. Mon problème est le suivant: j'ai des applications Web ASP.NET volumineuses et complexes qui utilisent largement ScriptManager (la base d'ASP.NET AJAX) et qui doivent être déployées par un client gouvernemental qui doit activer ce paramètre de stratégie FIPS. Toute page ASP.NET avec un ScriptManager sur elle lance cette exception:
[InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.]
System.Security.Cryptography.SHA1Managed..ctor() +3607454
System.Security.Policy.Hash.get_SHA1() +45
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +85
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +99
System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +525
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +910
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +193
System.Web.UI.ScriptReference.GetUrlFromName(ScriptManager scriptManager, IControl scriptManagerControl, Boolean zip) +306
System.Web.UI.ScriptManager.RegisterUniqueScripts(List`1 uniqueScripts) +169
System.Web.UI.ScriptManager.RegisterScripts() +407
System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +200
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +11041982
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3672
Même en ajoutant l'élément <enforceFIPSPolicy enabled="false"/>
à web.config ne résout pas l'exception.
Est-il possible de configurer ASP.NET de sorte que ScriptManager puisse être utilisé avec la stratégie de sécurité Windows FIPS?