.NET Core 的 SSRS 报告,HTTP 请求未经客户端身份验证方案“Ntlm”的授权

问题描述 投票:0回答:1

我正在尝试从 .NET Core 应用程序生成 SSRS 报告,并且我正在遵循此教程
但我遇到以下异常

HTTP 请求未经客户端身份验证方案“Ntlm”的授权。从服务器收到的身份验证标头是“NTLM”。

当我删除凭据并将

BasicHttpSecurityMode.None
HttpClientCredentialType.None
一起使用时,一切正常,但我需要向服务添加凭据

我知道这个错误有很多答案,但我已经尝试了几乎所有的答案,但没有任何对我有用

这是我尝试过的:

我尝试将

ProxyCredentialType
添加为
Ntlm
但我得到了同样的错误

var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Ntlm;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.MaxReceivedMessageSize = 10485760; //10MB limit
var rsExec = new ReportExecutionServiceSoapClient(binding, new EndpointAddress(SSRSReportExecutionUrl));
var clientCredentials = new NetworkCredential(SSRSUsername, SSRSPassword, ".");
if (rsExec.ClientCredentials != null)
            {
                rsExec.ClientCredentials.Windows.AllowedImpersonationLevel =System.Security.Principal.TokenImpersonationLevel.Impersonation;
                rsExec.ClientCredentials.Windows.ClientCredential = clientCredentials;
            }

我还尝试将

HttpClientCredentialType.Ntlm
替换为
HttpClientCredentialType.Windows
但出现此错误

System.ServiceModel.Security.MessageSecurityException:HTTP 请求未经客户端身份验证方案“协商”授权。从服务器收到的身份验证标头是“NTLM”

一些答案建议修改

web.config
文件或使用 Microsoft 服务配置编辑器对其进行编辑,但在我的情况下我没有找到此文件或此编辑器,我认为这些存在于 .NET 框架中,而不是 .NET 核心中,但我不确定

知道我应该做什么来修复这个错误吗?

c# wcf .net-core reporting-services
1个回答
0
投票

据我所知,网上大部分案例都是用IIS部署,并使用Windows身份验证进行验证。如果您使用的是 IIS,只需更改启用的 Windows 身份验证,然后尝试按照本文中的步骤操作。

如果不起作用,请尝试使用 Kerberos 并在使用之前注册 SPN。

© www.soinside.com 2019 - 2024. All rights reserved.