Usuário com melhor resposta
Acesso por Ip ou nome de dominio

Pergunta
-
Ola.
Preciso publicar uma aplicação WEB que utiliza o report services, porém meu report services só responde pelo http://nome_maquina:81/ReportServer. Tentei realizar o acesso utilizando o endereço http://IP:81/ReportServer e o http://nome_maquina.dominio.com.br:81/ReportServer porém os mesmos solicitam autenticação tanto em estações clientes como no proprio servidor.
Encontrei algo na net sobre alterações que deveriam ser realizadas no IIS, porém estou utilizando o 2008R2 e o SQL Std 2008 R2 e não é criado nenhum diretorio no IIS.
Se alguem puder me ajudar, agradeço.
Cristyan Giovane
Respostas
-
Pelo que você me descreveu sobre seu cenário são duas aplicações distintas , para cada uma você tem um tipo de restrição de acesso uma não se conversa com a outra por isso são dois controle de acessos separados.
Uma forma de resolver isso é ter o mesmo tipo de autenticação nas duas aplicações por exemplo fazer uma referência do webservice do reporting service na sua aplicação web e autenticar na aplicação web e mostrar na página, no meu exemplo abaixo utilizei como padrão o excel para gerar direto.
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { RptExe.ReportExecutionService rsexe = new RptExe.ReportExecutionService(); rsexe.Credentials = System.Net.CredentialCache.DefaultCredentials; string reportPath = "NomeDoReport"; // Render arguments byte[] result = null; string format = "Excel";//Tipo do report string historyID = null; string encoding; string mimeType; string extension; RptExe.Warning[] warnings = null; string[] streamIDs = null; RptExe.ExecutionInfo execInfo = new RptExe.ExecutionInfo(); RptExe.ExecutionHeader execHeader = new RptExe.ExecutionHeader(); rsexe.ExecutionHeaderValue = execHeader; execInfo = rsexe.LoadReport(reportPath, historyID); String SessionId = rsexe.ExecutionHeaderValue.ExecutionID; result = rsexe.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs); Response.ClearContent(); Response.AppendHeader("Content-disposition", result.Length.ToString()); Response.ContentType = "application/vnd.ms-excel"; Response.BinaryWrite(result); Response.Flush(); Response.Close(); }
ref http://support.microsoft.com/kb/875447
ref http://sandeep-aparajit.blogspot.com/2010/02/how-to-execute-and-save-ssrs-report.html
Américo Arvani
MCP Frw web 2.0
MCP Frw web/win 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com- Marcado como Resposta Cristyan Giovane sexta-feira, 18 de fevereiro de 2011 20:40
Todas as Respostas
-
Olá,
Tente configurar através do Reporting Services Configuration Manager
Caminho no menu do Windows Microsoft SQL Server 2008/ Configuration Tools /Reporting Services Configuration Manager
http://msdn.microsoft.com/pt-br/library/ms156305.aspx
Configure o Web Service URL em advance você pode configurar o IP , etc.
Quanto ao nível de autenticação suportado e como configurar http://msdn.microsoft.com/pt-br/library/bb283249.aspx .
Américo Arvani
MCP Frw web 2.0
MCP Frw web/win 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com -
Olá.
Quanto a configuração do ip no Configuration Manager, eu ja havia tentado, setando ou não o ip ele pede autenticação quando o acesso não é realizado pelo nome da maquina.
Quanto aos niveis de autenticação vou testar agora... não sei exatamente como proceder, minha configuração atual esta assim.
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
-
Cristian ,
Como você está fazendo essa atenticação?
Veja se te ajuda eu tenho essa configuração e não tenho problemas .
<Authentication> <AuthenticationTypes> <RSWindowsNegotiate/> <RSWindowsNTLM/> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence </Authentication>
A autenticação está sendo feito via AD
Verifique se no web.config
está
<authentication mode="Windows" /> <identity impersonate="true" />
Américo Arvani
MCP Frw web 2.0
MCP Frw web/win 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com -
No Autentication havia duas linha além dessas, tentei remover e parou de funcionar.
o web.config esta ok.
O que acho estranho é que qndo utilizo o http://rsi10:81/ReportServer ele funciona perfeitamente, mas quando tento pelo http://192.168.0.14:81/ReportServer ele fica solicitando o usurário e senha do domínio. Se informo um usuario valido ele funciona perfeitamente.
-
Bom dia, Cristian
Qual a necessidade que você tem para fazer esse acesso via IP? Na minha opnião acredito que para fazer esse tipo de acesso ou você vai ter que ter um usuário de serviço , ou retirar a autenticação .
Américo Arvani
MCP Frw web 2.0
MCP Frw web/win 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com -
Possuo uma aplicação WEB que utiliza ele, porém preciso publicar essa aplicação para alguns usuários acessarem de fora.
A aplicação até funcionou, mas quando uso nos relatórios o endereço valido do meu domínio, ele fica solicitando autenticação. -
Pelo que você me descreveu sobre seu cenário são duas aplicações distintas , para cada uma você tem um tipo de restrição de acesso uma não se conversa com a outra por isso são dois controle de acessos separados.
Uma forma de resolver isso é ter o mesmo tipo de autenticação nas duas aplicações por exemplo fazer uma referência do webservice do reporting service na sua aplicação web e autenticar na aplicação web e mostrar na página, no meu exemplo abaixo utilizei como padrão o excel para gerar direto.
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { RptExe.ReportExecutionService rsexe = new RptExe.ReportExecutionService(); rsexe.Credentials = System.Net.CredentialCache.DefaultCredentials; string reportPath = "NomeDoReport"; // Render arguments byte[] result = null; string format = "Excel";//Tipo do report string historyID = null; string encoding; string mimeType; string extension; RptExe.Warning[] warnings = null; string[] streamIDs = null; RptExe.ExecutionInfo execInfo = new RptExe.ExecutionInfo(); RptExe.ExecutionHeader execHeader = new RptExe.ExecutionHeader(); rsexe.ExecutionHeaderValue = execHeader; execInfo = rsexe.LoadReport(reportPath, historyID); String SessionId = rsexe.ExecutionHeaderValue.ExecutionID; result = rsexe.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs); Response.ClearContent(); Response.AppendHeader("Content-disposition", result.Length.ToString()); Response.ContentType = "application/vnd.ms-excel"; Response.BinaryWrite(result); Response.Flush(); Response.Close(); }
ref http://support.microsoft.com/kb/875447
ref http://sandeep-aparajit.blogspot.com/2010/02/how-to-execute-and-save-ssrs-report.html
Américo Arvani
MCP Frw web 2.0
MCP Frw web/win 3.5
Se ajudou , marque como resposta.
http://americoarvani.blogspot.com- Marcado como Resposta Cristyan Giovane sexta-feira, 18 de fevereiro de 2011 20:40