MessageSecurityOverHttp.NegotiateServiceCredential 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示是在客户端带外预配服务凭据,还是通过协商过程从服务获取。
public:
property bool NegotiateServiceCredential { bool get(); void set(bool value); };
public bool NegotiateServiceCredential { get; set; }
member this.NegotiateServiceCredential : bool with get, set
Public Property NegotiateServiceCredential As Boolean
属性值
true 如果通过协商过程获取服务凭据,则为 ;否则,为 false. 默认值为 true。
示例
以下代码演示如何访问和设置此属性。
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType =
MessageCredentialType.UserName;
binding.Security.Message.NegotiateServiceCredential = false;
CalculatorClient CalculatorClient = new CalculatorClient("myBinding");
CalculatorClient.ClientCredentials.ServiceCertificate.
SetDefaultCertificate("Al", StoreLocation.CurrentUser, StoreName.My);
Dim binding As New WSHttpBinding()
binding.Security.Mode = SecurityMode.Message
binding.Security.Message.ClientCredentialType = _
MessageCredentialType.UserName
binding.Security.Message.NegotiateServiceCredential = False
Dim CalculatorClient As New CalculatorClient("myBinding")
CalculatorClient.ClientCredentials.ServiceCertificate. _
SetDefaultCertificate("Al", StoreLocation.CurrentUser, StoreName.My)
注解
将此属性设置为 true 需要客户端和服务支持 WS-Trust 和 WS-SecureConversation。 将此属性设置为 false 不需要支持 WS-Trust 或 WS-SecureConversation。
对于匿名、用户名或证书客户端凭据类型,将此属性 false 设置为意味着服务证书必须在客户端带外可用,并且客户端必须指定要使用的服务证书。
对于Windows凭据,将此属性设置为 false 会导致基于 KerberosToken 进行身份验证。 这要求客户端和服务是 Kerberos 域的一部分。 此模式与实现 OASIS 中的 Kerberos 令牌配置文件的 SOAP 堆栈互操作。 将此属性设置为 true 导致通过 SOAP 消息进行 SPNego 交换的 SOAP 协商。 此模式不可互操作。
此属性指示是否在客户端和服务之间自动协商服务凭据。 如果此属性是 true,则会发生此类协商。 如果此属性是 false,则必须在客户端指定服务凭据,然后才能与服务通信。
如果此属性设置为 false,并且绑定配置为使用 Windows 作为客户端凭据类型,则服务帐户必须与服务主体名称(SPN)相关联。 为此,请在网络服务帐户或 LOCAL SYSTEM 帐户下运行该服务。 也可以使用 SetSpn.exe 工具为服务帐户创建一个 SPN。 不论何种情况,客户端都必须在 <servicePrincipalName> 元素中使用正确的 SPN,或者通过使用 EndpointAddress 构造函数来应用正确的 SPN。 有关详细信息,请参阅 服务标识和身份验证。