2011-09-28 2 views
8

Windows 인증을 사용하는 MVC 3을 사용하는 ASP.NET 4.0의 ASP.NET 응용 프로그램이 있습니다.IIS7의 ASP.NET 인증 문제 - Windows 인증을 위해 User.Identity.Name이 비어 있습니다.

Visual Studio 2010에서 실행하면 모든 기능이 정상적으로 작동하지만 IIS7에 롤아웃하면 Windows 로그인 한 사용자가 결코 채워지지 않습니다 (User.Identity.Name 확인). 사용자 자격 증명에 대한 대화 상자 프롬프트도 나타나지 않습니다.

의 Web.config 설정 (도시되지 익명 금단 403 초래없이 콘텐츠를 디스 에이블) 익명으로

<authentication mode="Windows" /> 

는 IIS에서 I는 Windows 인증이 설정되어 있는지 알 수있다.

나는 "커널 모드 인증"(useKernelMode = "true")을 활성화 및 비활성화하려고 시도했지만 어떤 차이점도없는 것 같습니다. 인증을 제대로 수행하려면 다른 서버의 다른 사이트에서이 설정을 비활성화해야한다는 것을 기억합니다 (스택 아래에 잠재적 인 문제가 있음을 지적 할 수 있습니다). 경우

는 IIS의 applicationHost.config 파일에서 유용 :

<security> 
    <authentication> 
    <anonymousAuthentication enabled="true" /> 
    <digestAuthentication enabled="false" /> 
    <basicAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true" useKernelMode="false"> 
     <providers> 
     <clear /> 
     <add value="NTLM" /> 
     </providers> 
    </windowsAuthentication> 
    </authentication> 
</security> 

어떤 아이디어 문제가 될 수있는 것을?

미리 제안 해 주셔서 감사합니다. 1

업데이트 난에 테스트 다른 IIS7 서버를 찾기 위해 관리하고 내가 원하는대로 익명 액세스 모든 일을 사용할 경우 나는 발견했다. 그러나 익명 액세스를 사용하지 않도록 설정하더라도 원래 IIS7 서버에 여전히 문제가 있습니다 (지금 익명으로 유지하고 있습니다). 내가 추측하는 스택 아래로 더 많은 문제가 있어야합니다. 어떤 아이디어? 내가 상상할 수있는 것처럼 계속 튀어 나오고 물지려고 할 때 고쳐야 할 것이 있습니다. 그때 내가 로그인 프롬프트 대화 상자가 도전하고있는 문제 IIS7 상자 다이제스트 인증을 사용하는 경우

업데이트 2

모든 것이 내가 적절한 자격 증명을 제공하는 경우 예상대로 작동합니다. 그러나 이미 도메인에 로그인 한 사용자가있는 내부 웹 앱이기 때문에 이런 방식으로 도전하지 않으려 고합니다. 자격 증명은 두 번째 IIS7 상자에서 작동하므로 투명하게 통과해야합니다.

업데이트 3

일부 진전 ... 내가 발견 한이 웹 응용 프로그램은 다음과 같은 인증을 제공하는 다음 직접 IIS7의 ApplicationHost.config 파일을 편집 하위 사이트의 루트에 있고하지 않을 경우

<authentication> 
    <anonymousAuthentication enabled="false" /> 
    <windowsAuthentication enabled="true"> 
    <providers> 
     <clear /> 
     <add value="NTLM" /> 
    </providers> 
    </windowsAuthentication> 
    <digestAuthentication enabled="false" /> 
</authentication> 

매우 적절한 결과를 제공하지 않는 인증을 구성하는 IIS7의 UI를 사용하여 : 설정은 예상대로 사이트가 작업 할 수 있습니다. IIS7에서 상속 받고 있다고 가정하기 때문에 병동 이후에 인증 항목이 누락되거나 틀린 설정이 있습니다 (windowsAuthentication이 제대로 작동하려면 현재 위의 공급자 구성이 필요합니다).

불행히도 문제의 웹 응용 프로그램은 실제로 내부 버전 (Windows 인증> www.site 사용)이므로 하위 응용 프로그램입니다.co.kr/internal) 및 외부 버전 (양식 인증> www.site.com/external)을 사용하십시오. 나는 아직 하위 응용 프로그램으로 작동하도록 인증을받을 수 없습니다. 나는 단지 "Error Code : 403 Forbidden"을 얻는다.

+0

체크 아웃 : http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –

+0

어떤 브라우저를 테스트하고 있습니까? 파이어 폭스의 경우 체크 아웃을 원할 수 있습니다. https://addons.mozilla.org/en-US/firefox/addon/integrated-auth-for-firefox/ 파이어 폭스는 Windows 인증을 "활성화"하지 않고 상자. – NotMe

+0

환호 Davide,하지만 아무것도 도움이되었습니다. 이 사람은 web.config 설정을 놓쳤으므로 Windows 인증을 얻는 데 문제가있는 것처럼 보였습니다 (VS 또는 IIS에서 작동하지 못함). 모든 것이 VS에서 나에게 잘 작동합니다. IIS가 정상적으로 작동하지 않습니다. – Gavin

답변

3

이 경우 Microsoft ISA Server 문제였습니다. 요청이 Windows 인증 사이트에 대한 ISA를 통해 내부적으로 라우팅 된 것 같습니다. 일단 ISA가 제거되면 문제가 사라졌습니다.

ISA에 대해 많이 알지 못하고 요청을 라우트하는 방법을 알고 있지만 일부 규칙에 따라 요청에서 중요한 정보를 제외해야한다고 가정합니다.

유사한 설정을 진단하는 데 도움이 될 경우를 대비하여 다음과 같이 설명합니다. 네트워크 관리자가 내부 트래픽을 ISA를 통해 라우팅하지 않았다고 말했지만 내부적으로 ISA에 연동되어 있음을 보여주었습니다.

0

다른 서버에서는 익명 액세스를 비활성화했지만 메인 서버에서는 403 오류가 발생한다고 언급했습니다. 따라서 사이트가 실행되고있는 폴더의 파일 기반 사용 권한을 확인합니다. 과거에는 \ Network Serivce 계정에 사이트 폴더 및 모든 하위 폴더에 대한 모든 권한을 부여해야했거나 403 오류가 발생했습니다. 작동중인 서버의 파일 사용 권한을 확인하고 작동하지 않는 서버와의 차이점이 있는지 확인하십시오.

또한이 문제가 아니라면 다른 서버가 아닌 다른 서버에서 작동한다는 것을 알고 있으므로 두 서버간에 다른 모든 IIS 설정을 비교하는 것이 좋습니다. 차이점을 찾아라.

+0

고마워요,하지만 여전히 기쁨은 없습니다. 네트워크 서비스는 폴더에 대한 모든 권한을 가지며 응용 프로그램 풀에서도 사용됩니다. 나는 서버를 비교하고 있지만, 지금까지 명백한 차이는 없다. 그것이 다른 상자에 대해 다른 광고 구성과 관련이 있는지 궁금하네요. 운영 팀 구성원을 추적하여 추가 조사를 시도합니다. – Gavin

+0

@Gavin, 네트워크 서비스가 아니어야하는 앱 풀 ID에 대한 권한을 확인해야합니다. – VinayC

+0

@VinayC - 환호. 이 경우 네트워크 서비스는 앱에서 사용 중입니다. poolNetwork 서비스는 파일 위치에 대한 모든 권한을가집니다. – Gavin

관련 문제