2010-06-11 15 views
0

사과로 시작하겠습니다. 그 잘못된 장소에서 그때 나는 새로운 응용 프로그램의 첫 번째 모듈에서 작성했습니다Asp.net mvc 응용 프로그램 배포/보안 문제

기본 정보 :-) 이동하시기 바랍니다 그래서 만약이 가장 여기에 서버 오류의 게시 있는지 확실하지 않았다 작업. 이것은 Visual Studio 2010을 사용하여 작성되었으며 .net 3.5 (현재)와 asp.net mvc 2를 대상으로 작성되었습니다. VS에서 빌드 된 개발 서버에서 실행되는 개발 중에는 정상적으로 작동하지만 IIS 7에 배포 된 후에는 작동하지 않습니다. /7.5.

응용 프로그램을 배포하기 위해 릴리스 모드에서 빌드하고 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하여 배포 패키지를 만들었습니다 (베타 버전에서 업그레이드 한 tfs의 자동화 된 빌드로 완료). 그런 다음 서버의 IIS로 가져 왔습니다.

응용 프로그램이 Windows/도메인 인증을 사용 중입니다.

문제 # 1

나는 인터넷 익스플로러를 발사하고 클라이언트 컴퓨터에서뿐만 아니라 원격 데스크톱 연결에서 응용 프로그램을 찾아 볼 수 있습니다. 원격 데스크톱의 IE 인스턴스에서 Session의 데이터를 읽고 저장하는 코드를 실행할 수 있지만 클라이언트 PC에서 세션 상태를 잃어 버리는 것처럼 보인다. 양식 제출을 클릭하면 페이지가 새로 고쳐지며 필요한 코드가 실행되지 않습니다. 나는 설정을 시도했다; InProc, SQLServer 및 StateServer. 하지만 문서의 경우

문제 # 2가 사무실 네트워크에 네트워크 공유에있는 즉시 PDF 및 TIFF 문서를 전망하고 생성하는 응용 프로그램의 일환으로

미리 :-(행운과 . 응용 프로그램이 배포 된 컴퓨터에서 실행중인 경우, 이전에 볼되지 않은이 작동합니다 클라이언트 PC에서 검색 할 때 그러나 내가 말하는 오류 : 경로 '\\ 파일 서버 \ 폴더 \에

액세스 file.tif '거부되었습니다. 설명 : curr 실행 중에 처리되지 않은 예외가 발생했습니다 웹 요청. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.UnauthorizedAccessException : '\\ fileserver \ folder \ file.TIF'경로에 대한 액세스가 거부되었습니다.

ASP.NET은 요청한 리소스에 액세스 할 수있는 권한이 없습니다. 리소스에 대한 액세스 권한을 ASP.NET 요청 ID에 부여하는 것이 좋습니다. ASP.NET은 응용 프로그램이 가장하지 않는 경우 사용되는 기본 프로세스 ID (일반적으로 IIS 5의 {MACHINE} \ ASPNET 또는 IIS 6의 네트워크 서비스)를 가지고 있습니다. 응용 프로그램이을 통해 가장하는 경우 ID는 익명 사용자 (일반적으로 IUSR_MACHINENAME) 또는 인증 된 요청 사용자가됩니다.

다른 서버에 있으므로 사용자에게 액세스 할 수 없습니다. 이 문제를 해결하려면 시도해 보았습니다.

1 - 도메인 관리자로 실행되도록 응용 프로그램 풀을 설정합니다. (보안 위험이라는 것을 알고 있지만, 지금 당장은 작동하도록 노력하고 있습니다.)

2 - World Wide Web 게시 서비스의 로그온 계정을 도메인 관리자로 설정하려면 다음을 수행하십시오. 서비스를 다시 시작하려고 할 때 ...

Windows에서 로컬 컴퓨터의 World Wide Web 게시 서비스를 시작할 수 없습니다.

오류 1079 :이 서비스에 지정된 계정이 동일한 프로세스에서 실행중인 다른 서비스에서 지정한 계정과 다릅니다.

모든 포인터/도움은 내 머리카락을 끌어 당기고 있기 때문에 많은 도움이 될 것입니다. DelegConfig v2 beta (Delegation/Kerberos Configuration Tool) - 내가 발견이 펑키 작은 도구를 사용하고


업데이트. 이것은 정말 유용했습니다. 그래서 파일 공유 (파일을 읽을 테스트 페이지가 있습니다)에 액세스 할 수있게되었습니다. 이제는 SQL Server에 사용자 자격 증명을 전달하는 문제가 생겼습니다 (내 선택을 wans't하지 마십시오. 이런 식으로 !!) 쿼리 등을 실행하지만 나는 그것을 사용자로 로그온 할 수 없습니다. 그것은 "NT Authority \ Network Service"(로그인 한 사용자 여야 함)가없는 sql 로그인을 가지고 액세스하려고 시도합니다.

내 연결 문자열은 다음과 같습니다 시스템이 여러 DBS 이상으로

<add name="User" connectionString="Data Source=.;Integrated Security=True" providerName="System.Data.SqlClient" /> 

없음 초기 카탈로그가 지정되지 않은 (또한! 내 선택이 아니었다).

나는 지금까지 모든 도움을 충분히 appriciate! :-)

추가 힌트가 필요하십니까?!

이슈 # 1 : 어쩌면 양식에 대한 작업으로 잘못된 URL이 정보의이 작은 부분

답변

0

마지막으로 마지막 금요일에 내가

... 작업을 가지고, 자격 증명의 위임을 정렬 도구는 매우 편리했다 올바른 SPN 기록 설정에 끝이 도움이되지 않습니다.

서버에 자격 증명을 전달할 때 SQL 용으로 설정해야한다는 것을 발견했습니다. 내가 연결을 멈추는 것을 발견 한 다른 것은 인바운드 윈도우 방화벽 설정 중 일부가 문제를 일으키는 곳이었습니다.

연결 문자열의 경우; 내가 유용하다고

<add name="ConnectionStringName" connectionString="Data Source=.;Integrated Security=SSPI;Trusted_Connection=True" providerName="System.Data.SqlClient" /> 

링크 : 나는 업데이트했다

Kerberos Authentication and SQL Server

DelegConfig

그리고 심지어 셰어 그것에 대해 주로 이야기 상점 ... this도 유용했다.

앞으로 도움이되기를 바랍니다.

0

난 단지 몇 가지 힌트를 줄 수 있을까? 또는 잡힌 & 예외가 무시 되었습니까? global.asax.vb에 onError 이벤트가 있습니까?

Sub Application_Error() 
    Dim ex As Exception = Server.GetLastError 
    ' NOW HANDLE THE EXCEPTION --> REPORTING :-) 
End Sub 

문제 # 2 : 는 최근 같은 예외를했다 -이 폴더에 대한 사용자의 접근 권한을 확인하고 AppPool을 정체성에 "NETWORKSERVICE"로 설정했다. 귀하의 경우에는 네트워크 폴더에 액세스하려고 시도해도됩니다. 서버의 액세스 권한을 확인하고 이름 대신 IP를 사용하려고 시도하면 이름 확인 문제 일 수 있습니다.

죄송합니다. 정보의 작은 부분입니다 ... 이것은 실행중인 서버에서 직접 디버그 옵션으로 만 해결할 수있는 문제처럼 보입니다.

1

문제 # 2 - 당신의 옵션은 다음과 같습니다

  • 구성 위임 (이중 홉 인증) - 내가 IIS7에서이 작업을 수행하지 않은 그것은 6 다른 비트,하지만 난 당신이 필요합니다 생각 AD에서 위임을위한 웹 서버 시스템 계정을 활성화하고 웹 서버에 대한 SPN을 만듭니다 (예 : setspn -A http/<Web Server FQDN> <Domain>\<Machine Name>). 문제 해결 Kerberos는 상당히 고통 스러울 수 있습니다.
  • 부여 제 (도메인) 응용 프로그램 풀 계정에 네트워크 리소스에 액세스 할 수 있는지 익명 인증을가 업데이트하려면 (<anonymousAuthentication enabled="true" userName="" defaultLogonDomain="" />)

응답 켜져 :

당신은 확인해야합니다 SQL Server에서 Kerberos 인증이 작동합니다. 쿼리를 실행하십시오 select auth_scheme from sys.dm_exec_connections where [email protected]@spid; NTLM 또는 KERBEROS가 반환됩니다. NTLM 인 경우 Kerberos를 사용하려면 SQL Server를 구성해야합니다. AD 서비스 계정에 대한 SPN을 setspn -A MSSQLSvc/<SQL Server FQDN>:1433 <Domain>\<Sql Service Account>으로 설정하고 SQL Server를 다시 시작한 다음 쿼리를 다시 시도하십시오. 연결 메커니즘으로 TCP/IP를 사용해야합니다 (기본값).

초기 카탈로그가없는 경우 모든 사용자 로그인에 액세스 할 수있는 기본 데이터베이스가 있는지 확인해야합니다. 로그인 구성 방법에 따라 다른 동작이 발생할 수 있으므로 개인적으로 하나의 데이터베이스를 초기 카탈로그로 선택합니다. 나는 업데이트에 말했듯이

관련 문제