//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security.Tokens { using System.IdentityModel.Claims; using System.ServiceModel; using System.IdentityModel.Policy; using System.Security.Principal; class WindowsSidIdentity : IIdentity { SecurityIdentifier sid; string name; string authenticationType; public WindowsSidIdentity(SecurityIdentifier sid) { if (sid == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("sid"); this.sid = sid; this.authenticationType = String.Empty; } public WindowsSidIdentity(SecurityIdentifier sid, string name, string authenticationType) { if (sid == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("sid"); if (name == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name"); if (authenticationType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("authenticationType"); this.sid = sid; this.name = name; this.authenticationType = authenticationType; } public SecurityIdentifier SecurityIdentifier { get { return this.sid; } } public string AuthenticationType { get { return this.authenticationType; } } public bool IsAuthenticated { get { return true; } } public string Name { get { if (this.name == null) this.name = ((NTAccount)this.sid.Translate(typeof(NTAccount))).Value; return this.name; } } public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) return true; WindowsSidIdentity sidIdentity = obj as WindowsSidIdentity; if (sidIdentity == null) return false; return this.sid == sidIdentity.SecurityIdentifier; } public override int GetHashCode() { return this.sid.GetHashCode(); } } }