Forms cookie 암호를 해독할 때 "암호화 작업 중 오류 발생
를 웹 이 했습니다.
'암호화 작업 중 오류가 발생했습니다.'
제가 몇 가지 조사를 해보았는데, 인증된 쿠키의 형태가 (웹호스트를 사용할 때 다른) 머신키에 바인딩되어 있는 것 같습니다.
이 문제를 해결할 수 있는 방법을 찾았지만 오류가 남아 있습니다.
:
/// <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();
}
}
스택 트레이스:
[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
저도 같은 문제에 직면했습니다.방금 브라우저의 쿠키와 캐시 데이터를 모두 지웠더니 수정되었습니다.당신에게도 효과가 있기를 바랍니다.
문제를 해결하지 못한 사람이라면 웹.config에서 암호화/복호화를 위한 "machineKey" 항목이 누락되었습니다.
양식 auth를 사용하는 경우.예외를 잡고 사용자가 로그인하여 유효한 쿠키를 만들 수 있도록 허용할 때 로그아웃할 수 있습니다.
catch (CryptographicException cex)
{
FormsAuthentication.SignOut();
}
이것도 방금 받았는데 데이터베이스에서 UserTokenCaches 테이블 항목을 삭제했습니다.
이것은 기계 키가 없기 때문인데, 기계 키는 암호화와 복호화를 수행하는 대칭 키로 사용됩니다.
IIS에서 기기를 설정하려면;
응용 프로그램으로 이동 -> 컴퓨터 키 -> 키 생성
ASP에서 만든 양식 인증 쿠키를 가져가려다가 이 문제가 발생했습니다.NET 2.0 앱을 사용하여 내부에서 암호를 해독합니다.NET4.5 Web API 프로젝트.해결책은 "compatibilityMode"라는 속성을 webapi의 web.config 파일 안에 있는 "machineKey" 노드에 추가하는 것이었습니다.
<machineKey
...
compatibilityMode="Framework20SP2"/>
문서: https://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx
그리고 의사는 다음과 같이 해당 속성에 대해 허용된 값을 제시합니다.
- 프레임워크 20SP1.이 값은 ASP를 지정합니다.NET은 ASP 버전에서 사용 가능했던 암호화 방법을 사용합니다.2.0 SP2 이전의 NET.서버에 의 버전이 있는 경우 웹 팜의 모든 서버에 이 값을 사용합니다.NET Framework 2.0 SP2 이전 버전.이 값은 응용 프로그램 Web.config 파일에 httpRuntime 요소의 targetFramework 특성이 "4.5"로 설정되지 않는 한 기본값입니다.
- 프레임워크 20SP2. 이 값은 해당 ASP를 지정합니다.NET에서는 에 도입된 업그레이드된 암호화 방법을 사용합니다.NET Framework 2.0 SP2.모든 서버에 의 값이 있는 경우, 웹 팜의 모든 서버에 이 값을 사용합니다.NET Framework 2.0 SP2 이상이지만 적어도 하나에는 이 없습니다.NET Framework 4.5.
- 프레임워크 45.ASP에 대한 암호화 기능이 향상되었습니다.NET 4.5가 적용됩니다.응용 프로그램 Web.config 파일의 httpRuntime 요소의 targetFramework 특성이 "4.5"로 설정된 경우 기본값입니다.
또 다른 옵션은 브라우저 설정에서 쿠키를 지우는 것이며 이를 통해 새 쿠키를 저장할 수 있습니다.
저도 새로운 솔루션을 개발하고 localhost에서 웹사이트를 실행할 때 이런 경험을 했습니다.기계키를 설정해도 아무런 차이가 없었지만 localhost의 쿠키를 모두 삭제하는 것만으로 문제가 해결되었습니다.
protected void Application_Error(object sender_, CommandEventArgs e_)
{
Exception exception = Server.GetLastError();
if(exception is CryptographicException)
{
FormsAuthentication.SignOut();
}
}
Global.asax.cs 에서 Forms 인증(login/비밀번호)을 사용하는 한 Global.asax의 오류 잡기에서.나를 위해 일했습니다.
Single Sign On을 구현할 때 이 오류가 발생하는 경우(여기 http://www.alexboyang.com/2014/05/28/sso-for-asp-net-mvc4-and-mvc5-web-apps-shared-the-same-domain/), 에 설명되어 있듯이) 모든 프로젝트에서 동일한 목표 프레임워크를 사용해야 합니다.한가지 프로젝트가 있었습니다.NET 4.0과 나머지는 on입니다.NET 4.5.2.
첫 번째 것을 4.5.2로 변경하여 문제가 해결되었습니다.
위조방지 토큰을 검증할 때 암호화 오류가 발생했습니다.
가상 메모리 제한이 1,000,000 킬로바이트에 달했을 때 재활용할 수 있도록 애플리케이션 재활용을 구성하기 위해 서버에 대한 보안 제어 구성 변경을 얼마 전에 수행했기 때문인 것 같습니다.
이는 가상 메모리 재활용을 하기에는 분명히 너무 적었습니다.개인 메모리 사용량은 1,000,000KB로 설정할 수 있지만 가상 메모리는 훨씬 더 많은 공간을 제공해야 합니다.
애플리케이션이 너무 자주 재활용되고 있다는 것을 알게 되었습니다.
가상 메모리 제한을 10,000,000KB로 늘렸더니 오류가 사라졌습니다.제가 양식을 작성하는 과정에서 애플리케이션 풀이 재활용되고 있었던 것 같습니다.
요.<httpRuntime targetFramework="4.7.2"/>
호환성 문제를 야기합니다.이 에서 targetFramework"4.7.2" 변수를 .<httpRuntime targetFramework="4.7.2"/>
가 webApi안 web.config를 .<httpRuntime targetFramework="4.7.2"/>
를 추가하는 것이 가 있었습니다WebApi에서 매개변수를 제거하거나 응용프로그램에서 매개변수를 추가하는 것이 효과적이었습니다.
저도 MVC 5 ASP와 같은 문제가 있었습니다.Net Web Application .net Framework 4.6.1
해결책:
- App_Data 폴더(솔루션 탐색기)로 이동
- NAME.mdf를 두 번 누릅니다(이 작업을 수행하면 Server Explorer 탭이 열립니다).
- UserTokenCaches 테이블에서 마우스 오른쪽 버튼을 클릭하고 테이블 데이터 표시
- 행 삭제
- 앱을 다시 실행하면 모든 것이 잘 될 것입니다.
누군가가 암호화 알고리즘을 DES(아주 오래된 암호화 표준)로 바꾸기로 결정했을 때 이 문제가 있었습니다.AES(더 현대적인 암호화 표준)로 다시 이동하면 오류가 해결됩니다.
그룹 정책이 DES를 사용하지 않도록 설정하는 것과 관련이 있을 수 있습니다.
암호화 알고리즘은 시스템 키 섹션(IIS 포함)에 숨겨져 있습니다.web.config에서도 설정하는 방법이 있을 것입니다.
언급URL : https://stackoverflow.com/questions/25857577/error-occurred-during-a-cryptographic-operation-when-decrypting-forms-cookie
'programing' 카테고리의 다른 글
Symfony2의 웹 디렉토리로 가는 서버 경로를 컨트롤러 내부에서 가져오는 방법은? (0) | 2023.10.09 |
---|---|
난수 생성을 시드하는 데 시간을 사용하는 대안이 있습니까? (0) | 2023.10.09 |
PHP: 클래스는 "Call to private method ... from context ..." 문제를 확장합니다. (0) | 2023.10.09 |
Oracle Server에서 문자열의 첫 번째 문자 제거 (0) | 2023.10.09 |
MySQL 데이터베이스에 값이 있는지 확인하는 방법 (0) | 2023.10.09 |