gpt4 book ai didi

windows-authentication - 带有 TransportWithMessageCredential 和 Windows 身份验证的 wsHttpbinding

转载 作者:行者123 更新时间:2023-12-04 15:44:04 25 4
gpt4 key购买 nike

我有一个用于 wsHttpBinding 和 TransportWithMessageCredential 的具有以下绑定(bind)配置的 IIS 托管 WCF 服务(我从空间绑定(bind)中删除了所有属性)

   <wsHttpBinding>
<binding name="BindingName" .../>
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>

具有以下服务行为:
  <serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Windows" />
</serviceCredentials>
</behavior>
</serviceBehaviors>

匿名身份验证被禁用,Windows 身份验证被启用。

在客户端,使用有效的 Windows 用户和密码设置凭据,但每次调用服务时都会出现以下异常:

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'. ---> System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.



使用 WCF 服务的自托管版本,它可以在有效的 Windows 帐户下正常运行。

任何帮助表示赞赏。

最佳答案

在 IIS 中启用 Windows 身份验证需要在传输层提供凭据,而您的配置定义身份验证发生在消息层

要解决此问题,您需要执行以下操作之一

1) 在 IIS 中启用匿名访问,因为身份验证将在消息层处理

或者

2) 将您的安全模式更新为传输

<wsHttpBinding>
<binding name="BindingName" .../>
<security mode="Transport">
<transport clientCredentialType="Ntlm" />
</security>
</binding>
</wsHttpBinding>

关于windows-authentication - 带有 TransportWithMessageCredential 和 Windows 身份验证的 wsHttpbinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com