문제

우리는 이러한 자격 증명이 어떻게 작동하는지 알아내는 데 어려움을 겪고 있습니다. 사실, 그들은 우리가 그들이 일할 것으로 기대하는 방식을 작동하지 않을 수 있습니다. 다음은 현재 문제에 대한 설명입니다.

웹 서비스를 통해 서로 대화 해야하는 2 개의 서버가 있습니다. 첫 번째 Server01)는 NetworkService 계정으로 Windows 서비스가 실행됩니다. 다른 하나 Server02 IIS 6.0으로 보고서 서비스가 실행됩니다. Windows 서비스 켜짐 Server01 사용하려고합니다 Server02 ReportingServices WebService는 보고서를 생성하고 이메일로 보냅니다.

그래서, 우리가 지금까지 시도한 것은 다음과 같습니다.

런타임에서 자격 증명 설정 (이것은 완벽하게 잘 작동합니다):

 rs.Credentials = new NetworkCredentials("user", "pass", "domain");

이제 일반 사용자를 사용할 수 있다면 모두 괜찮을 것입니다 ... 우리는 허용되지 않습니다. 따라서 DefaultCredetials 또는 DefaultnetworkCredentials를 사용하여 RS Webservice로 전달하려고합니다.

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

또는:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

어느 쪽이든 작동하지 않습니다. 우리는 항상 IIS에서 401 무단으로 받고 있습니다. 이제 우리가 아는 것은 네트워크 서비스로 기록 된 리소스에 액세스하려면 DOMAIN\MachineName$ (http://msdn.microsoft.com/en-us/library/ms998320.aspx):

원격 SQL 서버에 대한 액세스 부여

동일한 도메인 (또는 신뢰할 수있는 도메인)의 다른 서버에서 데이터베이스에 액세스하는 경우 네트워크 서비스 계정의 네트워크 자격 증명은 데이터베이스에 인증하는 데 사용됩니다. 네트워크 서비스 계정의 자격 증명은 DomainName AspnetServer $ 양식이며, 여기서 DomainName은 ASP.NET 서버의 도메인이고 AspnetServer는 웹 서버 이름입니다.

예를 들어, ASP.NET 응용 프로그램이 도메인 Contoso의 SVR1이라는 서버에서 실행되는 경우 SQL Server는 Contoso SVR1 $에서 데이터베이스 액세스 요청이 표시됩니다.

우리는 IIS와 동일한 방식으로 액세스 권한을 부여하는 것이 효과가 있다고 가정했습니다. 그러나 그렇지 않습니다. 또는 적어도 올바르게 인증하기 위해 무언가가 제대로 설정되지 않았습니다.

그래서 다음은 몇 가지 질문입니다.

  1. 우리는 어딘가에 "사용자"에 대해 읽었습니다. Windows 서비스 ?

  2. NetworkService 내장 계정에 대한 액세스 권한을 원격 IIS 서버에 부여 할 수 있습니까?

읽어 주셔서 감사합니다!

도움이 되었습니까?

해결책

필요한 모든 세부 사항은이 오래된 기사에 포함되어 있습니다.

http://msdn.microsoft.com/en-us/library/ms998351.aspx

요컨대, 이와 같은 문제를 해결하는 것이 혼란스러워지면 먼저 ASP.NET 어세이의 기술 세부 사항을 신중하게 검토해야합니다.

다른 팁

확인할 수있는 몇 가지 사항은 다음과 같습니다 .-보고 서비스에 대한 SPN (서비스 원명)을 설정하십시오. Google에서 좋은 예를 찾을 수 있습니다. - 허용 대표단 (clientCredentials.windows.allowImsonAcionLevel)

IIS에 인증하지 못하거나 SSRS에 인증하지 못하는 문제입니까? 도메인 machinename $ 계정에 자동화하려는 보고서를 실행하려면 SSRS에 권한이 부여되어야 할 수도 있습니다.

SSR은 일반적으로 IIS를 올바르게 구성하는 데 꽤 좋은 작업을 수행하므로 해당 설정을 엉망으로 만들 필요가 없습니다. 설치를 두 번 확인했습니다 (SSRS 2005, SSRS 2000에서 상황이 다르게 작동했을 수 있으며 실행중인 버전은 말하지 않았으며 Windows 인증을 사용하도록 설정되어 있으며 가장가 활성화되었습니다. 즉, IIS는 기본적으로 자격 증명을 인증해야합니다 (올바른 사용자 이름/비밀번호 검증)는 승인하지 않고 (해당 사용자가 해당 보고서를 실행할 수있는 권한이 있는지 결정)를 확인해야합니다. 그런 다음 IIS는 자격 증명을 SSRS로 전달합니다.이 보고서를 볼 수있는 계정을 결정하기위한 자체 설정이 있습니다.

또한 SSRS에서 직접 예약 된 보고서를 자동으로 자동화 할 수 있으므로 스케줄링이 상당히 기본적인 경우 (예 : 매일, 매주 등) Windows 서비스가 필요하지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top