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
- XmlSequenceWriter.cs
- CompoundFileDeflateTransform.cs
- Help.cs
- HexParser.cs
- TimeStampChecker.cs
- EntitySqlException.cs
- NativeMethodsOther.cs
- ByteConverter.cs
- HttpPostProtocolReflector.cs
- TransformerInfoCollection.cs
- CachingParameterInspector.cs
- CreateParams.cs
- ModelItem.cs
- TrustVersion.cs
- StorageEntityContainerMapping.cs
- XmlChildEnumerator.cs
- KeyedHashAlgorithm.cs
- WebPartDescription.cs
- ComAwareEventInfo.cs
- AutomationPatternInfo.cs
- SelectionPatternIdentifiers.cs
- System.Data_BID.cs
- FlagsAttribute.cs
- TypeConverterHelper.cs
- SafeFileMappingHandle.cs
- SecureStringHasher.cs
- Logging.cs
- DocumentViewerHelper.cs
- PathSegmentCollection.cs
- XmlArrayAttribute.cs
- ApplicationHost.cs
- versioninfo.cs
- TextElementAutomationPeer.cs
- AsymmetricKeyExchangeFormatter.cs
- Array.cs
- DesignerPainter.cs
- UnsafeNativeMethods.cs
- DataTablePropertyDescriptor.cs
- PageTextBox.cs
- SiteMapHierarchicalDataSourceView.cs
- PasswordBoxAutomationPeer.cs
- AssertSection.cs
- FormCollection.cs
- ProviderSettingsCollection.cs
- Cursor.cs
- ButtonColumn.cs
- EventBuilder.cs
- MethodImplAttribute.cs
- Win32MouseDevice.cs
- DependencyPropertyDescriptor.cs
- InheritanceService.cs
- SafeMarshalContext.cs
- RightsManagementLicense.cs
- Attributes.cs
- RtfFormatStack.cs
- Cursor.cs
- XmlPreloadedResolver.cs
- QueryCacheEntry.cs
- FrameworkElement.cs
- ButtonFieldBase.cs
- FlowLayout.cs
- DocumentOrderQuery.cs
- GridLengthConverter.cs
- SingleSelectRootGridEntry.cs
- EntityDataSourceStatementEditor.cs
- PerspectiveCamera.cs
- ManagementScope.cs
- ContentOperations.cs
- PeerInvitationResponse.cs
- CollectionContainer.cs
- CryptoProvider.cs
- activationcontext.cs
- PipelineDeploymentState.cs
- OdbcUtils.cs
- CqlParser.cs
- followingsibling.cs
- UniqueConstraint.cs
- MgmtResManager.cs
- DebugInfoGenerator.cs
- TraceUtility.cs
- BooleanToVisibilityConverter.cs
- XPathNode.cs
- DuplexChannel.cs
- HashJoinQueryOperatorEnumerator.cs
- Mutex.cs
- DocumentXPathNavigator.cs
- DeclarativeCatalogPart.cs
- MenuItemBinding.cs
- RegisteredScript.cs
- GridViewAutomationPeer.cs
- ToolboxItemAttribute.cs
- ObjectRef.cs
- TraceXPathNavigator.cs
- StickyNoteContentControl.cs
- EndpointAddress.cs
- DefaultWorkflowSchedulerService.cs
- HwndProxyElementProvider.cs
- PersonalizationState.cs
- SmtpFailedRecipientsException.cs
- IndexOutOfRangeException.cs