Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / SpnegoTokenAuthenticator.cs / 1 / SpnegoTokenAuthenticator.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security { using System; using System.ServiceModel; using System.Collections; using System.Xml; using System.Net; using System.Security.Principal; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.IdentityModel.Tokens; using System.ServiceModel.Security.Tokens; using System.Runtime.Serialization; using System.ServiceModel.Diagnostics; using SafeCloseHandle = System.IdentityModel.SafeCloseHandle; using SafeFreeCredentials = System.IdentityModel.SafeFreeCredentials; sealed class SpnegoTokenAuthenticator : SspiNegotiationTokenAuthenticator { bool extractGroupsForWindowsAccounts; NetworkCredential serverCredential; bool allowUnauthenticatedCallers; SafeFreeCredentials credentialsHandle; public SpnegoTokenAuthenticator() : base() { // empty } // settings public bool ExtractGroupsForWindowsAccounts { get { return this.extractGroupsForWindowsAccounts; } set { this.CommunicationObject.ThrowIfDisposedOrImmutable(); this.extractGroupsForWindowsAccounts = value; } } public NetworkCredential ServerCredential { get { return this.serverCredential; } set { this.CommunicationObject.ThrowIfDisposedOrImmutable(); this.serverCredential = value; } } public bool AllowUnauthenticatedCallers { get { return this.allowUnauthenticatedCallers; } set { this.CommunicationObject.ThrowIfDisposedOrImmutable(); this.allowUnauthenticatedCallers = value; } } // overrides public override XmlDictionaryString NegotiationValueType { get { return XD.TrustApr2004Dictionary.SpnegoValueTypeUri; } } public override void OnOpening() { base.OnOpening(); if (this.credentialsHandle == null) { this.credentialsHandle = SecurityUtils.GetCredentialsHandle("Negotiate", this.serverCredential, true); } } public override void OnClose(TimeSpan timeout) { base.OnClose(timeout); FreeCredentialsHandle(); } public override void OnAbort() { base.OnAbort(); FreeCredentialsHandle(); } void FreeCredentialsHandle() { if (this.credentialsHandle != null) { this.credentialsHandle.Close(); this.credentialsHandle = null; } } protected override SspiNegotiationTokenAuthenticatorState CreateSspiState(byte[] incomingBlob, string incomingValueTypeUri) { ISspiNegotiation windowsNegotiation = new WindowsSspiNegotiation("Negotiate", this.credentialsHandle); return new SspiNegotiationTokenAuthenticatorState(windowsNegotiation); } protected override ReadOnlyCollectionValidateSspiNegotiation(ISspiNegotiation sspiNegotiation) { WindowsSspiNegotiation windowsNegotiation = (WindowsSspiNegotiation)sspiNegotiation; if (windowsNegotiation.IsValidContext == false) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperWarning(new SecurityNegotiationException(SR.GetString(SR.InvalidSspiNegotiation))); } SecurityTraceRecordHelper.TraceServiceSpnego(windowsNegotiation); if (this.IsClientAnonymous) { return EmptyReadOnlyCollection .Instance; } using (SafeCloseHandle contextToken = windowsNegotiation.GetContextToken()) { WindowsIdentity windowsIdentity = new WindowsIdentity(contextToken.DangerousGetHandle()); SecurityUtils.ValidateAnonymityConstraint(windowsIdentity, this.AllowUnauthenticatedCallers); List policies = new List (1); WindowsClaimSet wic = new WindowsClaimSet(windowsIdentity, this.extractGroupsForWindowsAccounts, false); policies.Add(new System.IdentityModel.Policy.UnconditionalPolicy(wic, TimeoutHelper.Add(DateTime.UtcNow, base.ServiceTokenLifetime))); return policies.AsReadOnly(); } } } } // 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
- DataBinder.cs
- PropertyNames.cs
- DeclaredTypeValidatorAttribute.cs
- XsltContext.cs
- GeometryGroup.cs
- XmlSchemaFacet.cs
- BuildResultCache.cs
- Win32Exception.cs
- HttpModuleAction.cs
- NegotiateStream.cs
- PageHandlerFactory.cs
- XmlSerializerSection.cs
- HtmlInputRadioButton.cs
- RegexParser.cs
- XmlSchemaException.cs
- FileIOPermission.cs
- TreeView.cs
- CollectionDataContractAttribute.cs
- GlobalProxySelection.cs
- DataGridViewSortCompareEventArgs.cs
- HttpCookie.cs
- SafeNativeMemoryHandle.cs
- DataFormat.cs
- ScrollProperties.cs
- TimeZone.cs
- TreeNode.cs
- HebrewNumber.cs
- mda.cs
- CodeSnippetTypeMember.cs
- DataControlFieldCollection.cs
- WindowHideOrCloseTracker.cs
- KeyboardEventArgs.cs
- SetStoryboardSpeedRatio.cs
- PropertyDescriptorComparer.cs
- BasePropertyDescriptor.cs
- ResetableIterator.cs
- AssemblyBuilder.cs
- TextViewBase.cs
- Ticks.cs
- PolicyStatement.cs
- DataGridTableCollection.cs
- CompoundFileStreamReference.cs
- WeakHashtable.cs
- QilIterator.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- Encoder.cs
- _ContextAwareResult.cs
- DrawingGroupDrawingContext.cs
- Command.cs
- TargetInvocationException.cs
- versioninfo.cs
- SiteOfOriginPart.cs
- WorkerRequest.cs
- SendParametersContent.cs
- diagnosticsswitches.cs
- DataSourceHelper.cs
- IsolatedStorageException.cs
- FrameworkObject.cs
- CodeAttributeDeclarationCollection.cs
- COM2Properties.cs
- InputLanguageEventArgs.cs
- OptionUsage.cs
- AsyncOperation.cs
- IgnoreSectionHandler.cs
- ExecutionTracker.cs
- ImageIndexConverter.cs
- LeaseManager.cs
- ArrangedElementCollection.cs
- baseaxisquery.cs
- TextSearch.cs
- WindowsRichEditRange.cs
- SqlServices.cs
- FaultContext.cs
- TextBoxView.cs
- DemultiplexingDispatchMessageFormatter.cs
- RowParagraph.cs
- Opcode.cs
- Label.cs
- ConsumerConnectionPointCollection.cs
- ItemsControlAutomationPeer.cs
- wmiprovider.cs
- CurrentTimeZone.cs
- TypeToStringValueConverter.cs
- ClassicBorderDecorator.cs
- SqlParameter.cs
- ModelItemDictionaryImpl.cs
- EventItfInfo.cs
- Certificate.cs
- RowParagraph.cs
- ComboBoxAutomationPeer.cs
- Button.cs
- RenderData.cs
- ObjectKeyFrameCollection.cs
- _MultipleConnectAsync.cs
- NativeMethods.cs
- CalendarBlackoutDatesCollection.cs
- ProxyFragment.cs
- HandlerFactoryWrapper.cs
- Margins.cs
- TextParagraphCache.cs