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
- OAuth를 사용하도록 설정하고 OAuthProvider를 생성합니다.그러나 machineKey 작업이 필요하므로 사용자가 제어하는 서버에서 OAuthProvider를 호스트해야 합니다.
- 타사 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
'programing' 카테고리의 다른 글
| web.config 파일에서 appSettings 섹션을 읽는 방법은 무엇입니까? (0) | 2023.04.27 |
|---|---|
| Azure DevOps - YAML 대신 GUI를 사용하여 빌드 파이프라인을 편집합니다. (0) | 2023.04.27 |
| 어떻게 MessageBox를 성공적으로 구현했습니까?MVVM에 () 기능을 표시하시겠습니까? (0) | 2023.04.27 |
| 웹 서버가 응답하기를 기다리는 bash에서 루프를 만드는 방법은 무엇입니까? (0) | 2023.04.27 |
| VBA에서 "메모리 부족 오류"를 방지하기 위해 메모리를 지우는 방법은 무엇입니까? (0) | 2023.04.27 |