| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //----------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace System.ServiceModel.Security
- {
- using System;
- using System.Net;
- using System.Security.Principal;
- using System.ServiceModel;
- public sealed class WindowsClientCredential
- {
- internal const TokenImpersonationLevel DefaultImpersonationLevel = TokenImpersonationLevel.Identification;
- TokenImpersonationLevel allowedImpersonationLevel = DefaultImpersonationLevel;
- NetworkCredential windowsCredentials;
- bool allowNtlm = SspiSecurityTokenProvider.DefaultAllowNtlm;
- bool isReadOnly;
- internal WindowsClientCredential()
- {
- }
- internal WindowsClientCredential(WindowsClientCredential other)
- {
- if (other.windowsCredentials != null)
- this.windowsCredentials = SecurityUtils.GetNetworkCredentialsCopy(other.windowsCredentials);
- this.allowedImpersonationLevel = other.allowedImpersonationLevel;
- this.allowNtlm = other.allowNtlm;
- this.isReadOnly = other.isReadOnly;
- }
- public TokenImpersonationLevel AllowedImpersonationLevel
- {
- get
- {
- return this.allowedImpersonationLevel;
- }
- set
- {
- ThrowIfImmutable();
- if (((value == TokenImpersonationLevel.None) || (value == TokenImpersonationLevel.Anonymous)) && System.ServiceModel.Channels.UnsafeNativeMethods.IsTailoredApplication.Value)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.UnsupportedTokenImpersonationLevel, "AllowedImpersonationLevel", value.ToString())));
- }
- this.allowedImpersonationLevel = value;
- }
- }
- public NetworkCredential ClientCredential
- {
- get
- {
- if (this.windowsCredentials == null)
- this.windowsCredentials = new NetworkCredential();
- return this.windowsCredentials;
- }
- set
- {
- ThrowIfImmutable();
- this.windowsCredentials = value;
- }
- }
- [ObsoleteAttribute("This property is deprecated and is maintained for backward compatibility only. The local machine policy will be used to determine if NTLM should be used.")]
- public bool AllowNtlm
- {
- get
- {
- return this.allowNtlm;
- }
- set
- {
- ThrowIfImmutable();
- this.allowNtlm = value;
- }
- }
- internal void MakeReadOnly()
- {
- this.isReadOnly = true;
- }
- void ThrowIfImmutable()
- {
- if (this.isReadOnly)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.ObjectIsReadOnly)));
- }
- }
- }
- }
|