9

일부 IIS6 사이트를 IIS7로 마이그레이션하기 시작할 준비가되었으며 응용 프로그램은 현재 폼 인증을 사용하고 있습니다. 우리는 사용자를 위해 Windows 인증을 사용하기 위해 다양한 사이트로부터 요청을 받기 시작했습니다. 이 방법은 구현하기 쉽지만 (내부적으로는 응용 프로그램에 문제가 없다는 것을 예상 한대로 나타냈다.) 다음 질문은 Windows가 작동하지 않을 때 Forms 인증을 유지하는 방법입니다. IIS6에서 어떻게 구성해야하는지에 대한 여러 가지 연습을 보았습니다. IIS7에서도 똑같은 작업을 할 수 있었지만 고전 모드 처리를 켜야했습니다. 가능한 경우 모든 솔루션을 IIS6에 다시 포팅하여 빌드 트리를 간단하게 유지해야합니다.IIS7 혼합 모드 인증

그럼 내 선택은 무엇입니까? IIS7의 Windows 통합 인증, web.config의 양식 인증 및 401 오류를 양식을 사용하여 로그인 할 수있게 해주는 "오류 페이지"로 리디렉션 한 다음 일반 응용 프로그램으로 다시 설정할 수 있습니까?

양식이 필요할 수있는 경우 계약 직원, 지원 직원 및 누군가가 익스트라 넷에서 사이트에 액세스해야하는 경우가 있습니다. 그래서 우리 직원이 기능을 확인하고 버그 보고서를 확인하기 위해 로그인하는 것이 가장 중요합니다. 우리는 지원 직원이 일하기를 원한다고 말했고, 항상 살아있을 Windows 로그인이 필요합니다. 그러면 우리는 누가 사이트에 로그인 할 수 있는지에 대한 지역 책임을 강요 할 것입니다.하지만 우리는 폼 인증을하는 것이 좋습니다.

의견이 있으십니까? 이미 포럼을 통해 도움이 필요하다면 이미 읽은 기사 링크를 게시 할 수 있습니다.

tl; dr : 기존 파이프 라인으로 변경하지 않고 IIS7에서 혼합 모드 인증 (폼, 창)을 수행하는 방법 및 가능한 경우 IIS6에서 빌드를 계속 사용할 수 있어야합니다.

+0

내 기본 빌드 아래에 두 개의 별도 "프로젝트"가있는 것이 좋습니다 (a-la http://stackoverflow.com/questions/2432845/asp-net-mvc-and-mixed-mode-authentication). 엄격하게 Web.config MachineKey 당 컴퓨터 특정 쿠키를 발급하고 따라서 인증 메커니즘을 응용 프로그램 사용과 분리하여 보관하고 주 응용 프로그램에서 Forms를 유지할 수 있습니까? 그것이 가장 쉬운 방법 일 것입니다. – jcolebrand

+0

아마도 다음과 같이해야합니다. http://www.15seconds.com/Issue/050203.htm 하지만 모두가 한 스택 아래에있을 때 매우 야만적 인 것처럼 보입니다. – jcolebrand

+0

또한 원래의 질문과 몇 가지 응답을 게시 한 후에이 내용을 읽은 모든 사용자를 위해 : 사용자가 사이트를 탐색하고 401 응답에 자격 증명을 입력하지 않으면 다시 ASP.NET 기본 401 오류 페이지로 되돌아옵니다. 그 시점에서 내 양식 기본 페이지로 리디렉션하는 방법을 알아 내지 못했지만 (어쩌면 너무 빨리 그만 두지 않겠습니까?) – jcolebrand

답변

7

아니, 그건 -이 : 필자는

당신이 웹 설정에서 익명 액세스를 제거 + 당신이 IIS7에 대한 말, 나는이 같은 가정 ... 제안 된 솔루션의 커플에 벽돌 벽에 올 별로 좋지는 않지만 주석 답장에서 코드 블록을 수행 할 수 없으므로 새로운 대답을 게시 할 것입니다. ...

다음 코드 블록을 사용하면 IIS7의 모든 액세스를 제어 할 수 있습니다. (IIS6의 GUI 변경이 적용되는 메타베이스)

<location path="WindowsLogin.aspx" > 
    <system.web> 
     <authorization> 
      <deny users="?" /> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
    <system.webServer> 
     <security> 
      <authentication> 
       <anonymousAuthentication enabled="false" /> 
       <windowsAuthentication enabled="true" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</location> 
+2

IIS7이 메타베이스를 가지고 있음을 암시하려고 노력하고 있습니다 ... – jcolebrand

2

내게로 돌아와 주셔서 감사합니다. 몇 주 동안 구현을 여러 번 반복 해 보았습니다. 인터넷 (자바 스크립트, 401, 2 가상 디렉터리) havnt는 내가 원한 것처럼 실제로 작동하는 것을 발견했다. iis의 버전이 다르더라도 다른 하드웨어/설정을 사용하는 클라이언트가 있기 때문에 가능한 한 포괄적 인 클라이언트가되도록하려는 것입니다.

<location path="Authent/WinLogin.aspx" > 
    <system.webServer> 
    <security> 
     <authorization> 
     <add accessType="Deny" users="?" /> 
     </authorization> 
    </security> 
    </system.webServer> 
</location> 
+0

아니요, 맞지 않습니다.하지만 주석 답장에서 코드 블록을 수행 할 수 없습니다. 그래서 나는 새로운 대답을 게시 할 것입니다 ... – jcolebrand

1

약간의 차이를두고 며칠을 보냈습니다 ... "Windows 인증 로그인"아래에 폼 로그인을 표시하는 첫 번째 로그인 화면이 필요했습니다.

나는 만족스런 결과를 얻지 못했기 때문에 결국 모든 기술을 포기했습니다.,

  • 통합 보안
  • 이 웹 사이트는 데이터베이스에 임시 "사용자 해시 키"를 생성하여이 설정 별도의 웹 사이트에 "LoginWithIntegratedSecurity"
  • 만들기 : 내 해결 방법은 다음과 같이, 그리고 완벽하게 작동 이는 URL에 해시 키
  • 은 폼 인증 웹 사이트에 다시 LogonPage로 리디렉션 사용자를 식별
  • 해시 키에 대한 폼 인증 검사에 LogonPage, 데이터베이스 점검 이후에 사용자를 기록

사용자가 "Windows 인증으로 로그인"버튼을 클릭하면 서버가 Windows 인증 사이트로 리다이렉트합니다 ("ReturnUrl"을 전달). 이 사이트는 사용자에게 도전하고 로그인 한 다음 다시 리다이렉트하여 "ReturnUrl"과 HashKey를 다시 전달합니다.

이 모든 것이 매우 빠르게 발생하며 매우 원활하게 보입니다.

나는 그 해킹 된 해결 방법을 안다.하지만 내 경우에는 잘 작동했다.

+0

와우, 그게 큰 해결 방법입니다. 내 디렉토리에 인증 수준이 서로 다른 두 개의 파일이 있습니다. – jcolebrand

+0

예, 그렇게 생각합니다. 그러나이 해시 키 로그인은 다른 시스템의 로그인 및 링크 동기화와 같은 몇 가지 다른 비트와 조각에 유용합니다. 또한 외부 (통합되지 않은) 사용자가 통합 자격 증명 프롬프트에 직면하기를 원하지 않았습니다. –

+0

그럼 어떻게 그들을 볼 수 없습니까? – jcolebrand

관련 문제