재우니의 블로그


The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster.


asp.net mvc 를 개발하게 되면, 위처럼 view 에서 @Html.AntiForgeryToken() 를 사용하여 controller 에서 [ValidateAntiForgeryToken] 어트리뷰트를 사용해야 요청 위조 방지를 막을 수 있습니다. 하지만 간혹 이 함수를 사용하여 크롬에서 사용을 하다보면 꼬여서 그런지 위와 같은 오류가 view 화면에서 보이는 경우가 많습니다.


검색을 하다 보니, 아래 사이트에서 machine key 를 변경하는 방법을 제공해 줍니다.

http://iamdotnetcrazy.blogspot.kr/2013/08/how-to-solve-anti-forgery-token-could.html


이를 사용할 때 validation 의 암호 방법을 여러가지 제공해 줍니다. .net 4 부터는 sha256 도 지원해 줍니다.

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name

/>


web.config 가 아닌 iis 에서도 이를 사용하는 방법이 존재하는데요. 한국어 번역으로 컴퓨터 키(machine key) 라고 존재합니다.

아래 처럼 설정해도 무관합니다. 이를 수정시 당연히 web.config 파일에 수정이 하므로 재시작을 하기때문에 서비스를 하고 있다면 조심해야 겠네요. ~