【问题标题】:Authentication Issues with .NET 4.5 DLL accessing SOAP 1.2 services.NET 4.5 DLL 访问 SOAP 1.2 服务的身份验证问题
【发布时间】:2021-11-27 01:07:19
【问题描述】:

我们正在进行一个项目,我们需要访问 SOAP 1.2 服务并使用 DLL 转换为 JSON。我们已经构建了所有内容,但被 .NET 4.5 中的身份验证问题所困扰,而这些问题在 .NET 5 中不会发生。我们认为这是一个简单的配置问题,但可能已经让 myoptic 试图让它工作。好奇是否有人遇到过类似的问题并有任何见解......

背景:

  • 使用 IIS Web 服务器上的 Windows 身份验证 (NTLM) 保护 SOAP 安全,无需基于角色的身份验证。
  • SOAP 服务基于 SOAP 1.2
  • SOAP 服务使用者客户端必须在 DLL(不是 EXE)内工作,才能与 Web 应用程序集成;由于客户端代码位于 DLL 中,因此无法更改父应用程序的配置;在 .NET 4.5 Framework 中工作(我们有在 .NET 5 中工作的代码);而且,我们无法触及托管 SOAP 1.2 服务的服务器。
  • 正在使用 WCF 在 DLL 中创建 SOAP 绑定
  • 使用 WSHttpBinding 类是因为 SOAP 1.2 协议
  • 当前在 DLL 中配置的绑定

我们的问题:

  • 我们在调用绑定函数时收到“HTTP 请求未经授权,使用客户端身份验证方案‘匿名’。从服务器收到的身份验证标头是‘NTLM,Negotiate’”异常
  • 示例代码:
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.None;
EndpointAddress endpointAddress = new EndpointAddress("http://...SummaryService.svc");                
ServiceClient client = new ServiceClient(binding, endpointAddress);
var result = await client.SomeFunctionAsync();

注意:从 .NET 5.0 应用程序运行此代码时,没有问题;我只在 .NET 4.5 .DLL/.EXE 中看到此错误。

有什么建议吗? TIA

【问题讨论】:

    标签: .net wcf soap dll


    【解决方案1】:

    您可以按照以下步骤检查您的配置:

    1. 检查您的安全模式并设置为TransportCredentialOnly

    2. 确保服务器端和客户端是同一个绑定。

    3. 设置代理类以允许模拟。

      Customer_PortClient proxy = new Customer_PortClient(); proxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 2012-02-28
      相关资源
      最近更新 更多