Pergunta

Nós estamos tendo um momento difícil descobrir como essas credenciais objetos de trabalho. Na verdade, eles podem não funcionar como esperávamos-los para o trabalho. Aqui está uma explicação do problema atual.

Temos 2 servidores que necessita para falar uns com os outros através de webservices. O primeiro (chamado de Let It Server01) tem um serviço do Windows executado como a conta NetworkService. O outro Server02 tem ReportingServices correndo com IIS 6.0. O serviço do Windows em Server01 está tentando usar o Server02 ReportingServices WebService para gerar relatórios e enviá-los por e-mail.

Então, aqui está o que nós tentamos até agora.

Definir as credenciais em tempo de execução ( Isso funciona perfeitamente bem ):

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

Agora, se pudéssemos usar um usuário genérico tudo ficaria bem, no entanto ... nós não estão autorizados a. Então, estamos tentando usar os DefaultCredetials ou DefaultNetworkCredentials e passá-lo para o RS Webservice:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

Ou:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

De qualquer forma não vai funcionar. Estamos sempre recebendo 401 Unauthrorized do IIS. Agora, o que nós sabemos é que, se queremos dar acesso a um recurso registrado como NetworkService, precisamos de lhe conceder a DOMAIN\MachineName$ ( http://msdn.microsoft.com/en-us/library/ms998320.aspx ):

A concessão de acesso a um SQL Server remoto

Se você estiver acessando um banco de dados em outro servidor no mesmo domínio (ou em um domínio confiável), as credenciais de rede da conta do serviço de rede são usados ??para autenticar no banco de dados. as credenciais da conta de serviço de rede são da forma DomainName \ AspNetServer $, onde DomainName é o domínio do servidor ASP.NET e AspNetServer é o nome do servidor Web.

Por exemplo, se o seu aplicativo é executado ASP.NET em um servidor chamado SVR1 no domínio CONTOSO, o SQL Server vê um pedido de acesso ao banco de CONTOSO \ SVR1 $.

Assumimos que a concessão de acesso da mesma forma com IIS iria funcionar. No entanto, isso não acontece. Ou, pelo menos, alguma coisa não está definido adequadamente para ele para autenticar corretamente.

Então, aqui estão algumas perguntas:

  1. Nós lemos sobre "Usuários representando" em algum lugar, precisamos definir isso em algum lugar do Windows Service ?

  2. É possível conceder acesso ao NetworkService conta interna para um servidor IIS remoto?

Obrigado por ler!

Foi útil?

Solução

Todos os detalhes que você precisa estão incluídos neste artigo muito antiga,

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

Em suma, quando você achar que é confuso para Resolver problemas como este, você deve primeiro analisar os detalhes técnicos por trás representação ASP.NET com cuidado.

Outras dicas

Aqui estão algumas coisas que você pode verificar: - definir um (nome principal de serviço) SPN para o serviço de relatórios; você pode encontrar bons exemplos no google; - Permitir delegação (ClientCredentials.Windows.AllowImpersonationLevel)

O problema é que você está falhando para autenticar para o IIS, ou deixar de autenticar SSRS? A conta de domínio \ MachineName $ podem precisar de ser concedida a permissão no SSRS para executar o relatório que você está tentando automatizar.

SSRS geralmente faz um trabalho muito bom de ficar IIS configurado corretamente, então você não precisa mexer com essas configurações. Eu verifiquei minha instalação (que é SSRS de 2005, as coisas podem ter trabalhado de forma diferente no SSRS 2000 e você não disse qual versão você está executando), e do conjunto para usar a autenticação do Windows e tem representação habilitado. Isso significa que o IIS deve basicamente apenas ser autenticar suas credenciais (validando a correta nome de usuário / senha), não autorizando (determinar se o usuário tem permissão para executar o relatório em questão). IIS, em seguida, passa as credenciais para SSRS, que tem suas próprias configurações para determinar o que conta tem permissão para exibir relatórios.

Além disso, você pode automatizar o envio de relatórios sobre uma base programada diretamente no SSRS, para que você não pode precisar o serviço Windows em tudo se sua programação é bastante básico (ou seja, diariamente, semanalmente, etc.).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top