programing

Azure 웹사이트에서 machineKey를 설정하는 방법

kakaobank 2023. 4. 27. 22:38
반응형

Azure 웹사이트에서 machineKey를 설정하는 방법

저는 Azure 웹사이트를 운영하고 있습니다.배포할 때마다 모든 사용자가 로그아웃됩니다. 왜냐하면machineKey변화들.

지정했습니다.machineKey에서web.config하지만 이것은 문제를 해결하지 못했습니다.나는 Azure가 자동으로 그것을 덮어씌우기 때문이라고 생각합니다.machineKey [1].

여기서 비슷한 질문 몇 개를 찾았지만 답은 데드 링크로 연결됩니다.

그렇다면, 해결책은 무엇일까요?Azure의 배포에 관계없이 사용자가 계속 로그인할 수 있는 방법이 있습니다.

다음 시간에 컴퓨터 키 구성 섹션 재설정 시도:Application_Start:

protected void Application_Start()
{
    // ...

    var mksType = typeof(MachineKeySection);
    var mksSection = ConfigurationManager.GetSection("system.web/machineKey") as MachineKeySection;
    var resetMethod = mksType.GetMethod("Reset", BindingFlags.NonPublic | BindingFlags.Instance);

    var newConfig = new MachineKeySection();
    newConfig.ApplicationName = mksSection.ApplicationName;
    newConfig.CompatibilityMode = mksSection.CompatibilityMode;
    newConfig.DataProtectorType = mksSection.DataProtectorType;
    newConfig.Validation = mksSection.Validation;

    newConfig.ValidationKey = ConfigurationManager.AppSettings["MK_ValidationKey"];
    newConfig.DecryptionKey = ConfigurationManager.AppSettings["MK_DecryptionKey"];
    newConfig.Decryption = ConfigurationManager.AppSettings["MK_Decryption"]; // default: AES
    newConfig.ValidationAlgorithm = ConfigurationManager.AppSettings["MK_ValidationAlgorithm"]; // default: SHA1

    resetMethod.Invoke(mksSection, new object[] { newConfig });
}

위에서는 사용자가 다음에서 적절한 값을 설정한다고 가정합니다.<appSettings>섹션:

<appSettings>
  <add key="MK_ValidationKey" value="...08EB13BEC0E42B3F0F06B2C319B..." />
  <add key="MK_DecryptionKey" value="...BB72FCE34A7B913DFC414E86BB5..." />
  <add key="MK_Decryption" value="AES" />
  <add key="MK_ValidationAlgorithm" value="SHA1" />
</appSettings>

그러나 원하는 모든 구성 소스에서 실제 값을 로드할 수 있습니다.

Azure가 machineKey를 다시 쓰는 경우에는 인프라스트럭처의 일부이기 때문에 많은 작업을 수행할 수 없습니다.하지만 다른 방법도 있습니다.

양식 재정의인증

양식의 소스 코드를 쉽게 검색할 수 있으므로 이 작업은 어렵지 않습니다.인증 및 자체 로직을 생성하고 MachineKey를 web.config 또는 데이터베이스에 저장된 자체 키로 교체합니다.

사용자 지정 인증 필터

가장 간단한 방법은 필터를 만들고 필터에서 쿠키를 확인, 확인 및 암호 해독하는 것입니다.설명이 성공한 경우 OnAuthorization 메서드에서 이 작업을 수행하고 IPrincipal의 새 인스턴스를 만들고 IsAuthenticated를 true로 설정해야 합니다.

OAuth

  1. OAuth를 사용하도록 설정하고 OAuthProvider를 생성합니다.그러나 machineKey 작업이 필요하므로 사용자가 제어하는 서버에서 OAuthProvider를 호스트해야 합니다.
  2. 타사 OAuth를 활성화합니다. Google, Facebook 등에서 OAuth를 활성화하면 사용자가 OAuth 공급자로 리디렉션되고 사용자가 계속 자동으로 로그인하고 새 세션이 설정되기 때문에 쉽습니다.

저도 같은 문제가 있었고 VS13에서 azure에 webdeploy 마법사를 사용하고 있었습니다.web.config에서 기계 키를 설정하고 배포된 web.config에서 자동 생성되도록 변경할 것이기 때문에 제가 미칠 것이라고 생각했습니다.웹 배포 스크립트/설정에 있습니다.제 해결책은 서버 탐색기를 사용하여 VS13 내에서 라이브아저 사이트를 연 다음 web.config를 편집하고 변경 사항을 저장하는 것이었습니다.이렇게 하면 제공된 키로 설정이 유지되고 모든 것이 정상적으로 작동합니다.

언급URL : https://stackoverflow.com/questions/29595034/how-to-set-machinekey-on-azure-website

반응형