Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / SystemIdentity.cs / 1 / SystemIdentity.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.ComponentModel; using System.Globalization; using System.Runtime.InteropServices; using System.Security.Principal; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; internal sealed class SystemIdentity : IDisposable { bool m_isDisposed; WindowsIdentity m_identity; object m_sync; public static readonly IdentityReference LsaIdentityReference = new SecurityIdentifier( "SY" ); public SystemIdentity( bool throwIfAlreadySystem ) { m_sync = new object(); WindowsIdentity identity = WindowsIdentity.GetCurrent(); if( identity.IsSystem && throwIfAlreadySystem ) { // // This is an internal fatal error. // throw IDT.ThrowHelperError( new InvalidOperationException( SR.GetString( SR.UserIdentityEqualSystemNotSupported ) ) ); } else if( !identity.IsSystem ) { m_identity = identity; #pragma warning suppress 56523 if( !NativeMethods.RevertToSelf() ) { IDT.Assert( false, "Identity management failure" ); } } else { // // Do nothing. we are LSA already and throwIfAlreadySystem == false // IDT.Assert( null == m_identity, "m_identity should be null when we are system and throwIfAlreadySystem == false" ); } } void IDisposable.Dispose() { if ( m_isDisposed ) { return; } lock( m_sync ) { if( m_isDisposed ) { return; } m_isDisposed = true; if( null != m_identity ) { // // Impersonate the user // if( !NativeMethods.ImpersonateLoggedOnUser( m_identity.Token ) ) { int hr = Marshal.GetHRForLastWin32Error(); // // This exception is fatal to our service. // it could corrupt the flow of identity that the service expects. // Failfast here. // Diagnostics.InfoCardTrace.FailFast( String.Format( CultureInfo.InvariantCulture, SR.GetString( SR.StoreImpersonateLoggedOnUserFailed ), hr ) ); } m_identity.Dispose(); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SoapFormatterSinks.cs
- DefaultEventAttribute.cs
- EntityViewGenerationConstants.cs
- IssuanceLicense.cs
- ContentElementCollection.cs
- ReflectPropertyDescriptor.cs
- DateTimeConstantAttribute.cs
- InkCanvasSelection.cs
- ALinqExpressionVisitor.cs
- IsolatedStorageFileStream.cs
- ControlParameter.cs
- NonSerializedAttribute.cs
- DbCommandTree.cs
- PresentationTraceSources.cs
- IdSpace.cs
- ApplicationException.cs
- TrackingMemoryStream.cs
- KeyGestureValueSerializer.cs
- InkPresenterAutomationPeer.cs
- Scanner.cs
- PixelShader.cs
- MemberInfoSerializationHolder.cs
- GcHandle.cs
- EpmSourcePathSegment.cs
- DirectoryGroupQuery.cs
- DocumentGrid.cs
- SubclassTypeValidatorAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- SafeEventLogWriteHandle.cs
- WeakKeyDictionary.cs
- Timer.cs
- System.Data_BID.cs
- TouchPoint.cs
- XamlSerializationHelper.cs
- TraceHandlerErrorFormatter.cs
- GridLength.cs
- Pair.cs
- Table.cs
- WebPartConnectionsEventArgs.cs
- ProjectionPath.cs
- XamlSerializerUtil.cs
- XmlImplementation.cs
- BuildManagerHost.cs
- SQLByteStorage.cs
- SpecularMaterial.cs
- DataGridColumnHeaderCollection.cs
- SessionViewState.cs
- ComponentEditorPage.cs
- MsmqHostedTransportConfiguration.cs
- SqlUdtInfo.cs
- embossbitmapeffect.cs
- SupportingTokenListenerFactory.cs
- BindingNavigator.cs
- AffineTransform3D.cs
- AssemblyAttributesGoHere.cs
- VisualStyleInformation.cs
- Msmq4SubqueuePoisonHandler.cs
- VerticalAlignConverter.cs
- Screen.cs
- Funcletizer.cs
- DependentTransaction.cs
- ProtectedConfiguration.cs
- ProxyWebPart.cs
- SafeSecurityHandles.cs
- propertytag.cs
- MSG.cs
- DescendentsWalkerBase.cs
- ActivityTypeResolver.xaml.cs
- ExpressionBindingCollection.cs
- TypeReference.cs
- WindowAutomationPeer.cs
- LockedAssemblyCache.cs
- ResourceReferenceKeyNotFoundException.cs
- FixedMaxHeap.cs
- XmlILStorageConverter.cs
- TablePattern.cs
- _SslState.cs
- InkSerializer.cs
- FileLevelControlBuilderAttribute.cs
- FrameworkContextData.cs
- WpfXamlType.cs
- PropertyValidationContext.cs
- BufferModesCollection.cs
- DataTableReader.cs
- KnownTypes.cs
- FixedStringLookup.cs
- BaseDataBoundControl.cs
- ForeignConstraint.cs
- SafeCryptContextHandle.cs
- WindowsToolbarAsMenu.cs
- Transform3DCollection.cs
- IOException.cs
- TypeListConverter.cs
- ClientProxyGenerator.cs
- PieceNameHelper.cs
- ListBoxDesigner.cs
- SoapIncludeAttribute.cs
- ThousandthOfEmRealDoubles.cs
- BoolLiteral.cs
- XamlRtfConverter.cs