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
- TextSelection.cs
- TraceContextRecord.cs
- DbDataRecord.cs
- MaterializeFromAtom.cs
- UIPermission.cs
- SystemIPGlobalStatistics.cs
- ObjectDataSourceMethodEventArgs.cs
- TitleStyle.cs
- DateTimeStorage.cs
- WaitForChangedResult.cs
- SingleSelectRootGridEntry.cs
- ElementNotAvailableException.cs
- PartialCachingControl.cs
- HttpApplicationStateWrapper.cs
- OrthographicCamera.cs
- JoinSymbol.cs
- UrlMapping.cs
- HttpStaticObjectsCollectionWrapper.cs
- SupportingTokenDuplexChannel.cs
- WhiteSpaceTrimStringConverter.cs
- DesignerVerbCollection.cs
- SystemFonts.cs
- StylusShape.cs
- SplitterDesigner.cs
- ToolStripComboBox.cs
- WorkflowFileItem.cs
- HtmlGenericControl.cs
- RowSpanVector.cs
- PropertyGrid.cs
- XamlTreeBuilderBamlRecordWriter.cs
- EntityContainerEntitySet.cs
- HtmlToClrEventProxy.cs
- WindowsListViewGroup.cs
- CorrelationResolver.cs
- XmlTextReaderImpl.cs
- AspCompat.cs
- StateMachineExecutionState.cs
- OleDbParameter.cs
- ResourceContainer.cs
- LexicalChunk.cs
- ExceptionTrace.cs
- Thickness.cs
- CornerRadiusConverter.cs
- FontFaceLayoutInfo.cs
- RulePatternOps.cs
- ConsoleCancelEventArgs.cs
- CreateParams.cs
- ParameterToken.cs
- CharacterBuffer.cs
- WithStatement.cs
- CapacityStreamGeometryContext.cs
- ValidationSummary.cs
- SiteMapNode.cs
- FormatterServices.cs
- TogglePatternIdentifiers.cs
- _TransmitFileOverlappedAsyncResult.cs
- DynamicDocumentPaginator.cs
- TemplateBuilder.cs
- ResourceManager.cs
- Not.cs
- CultureTableRecord.cs
- ThreadAttributes.cs
- TripleDES.cs
- SecurityTokenAttachmentMode.cs
- TypeDescriptor.cs
- WebOperationContext.cs
- DragDrop.cs
- ImmutableObjectAttribute.cs
- MappedMetaModel.cs
- RepeaterCommandEventArgs.cs
- AggregateNode.cs
- OdbcHandle.cs
- Helper.cs
- DataGridHeaderBorder.cs
- PageCache.cs
- SHA256.cs
- DispatcherExceptionFilterEventArgs.cs
- SrgsItemList.cs
- StateManagedCollection.cs
- ExpressionCopier.cs
- XPathArrayIterator.cs
- ProvidersHelper.cs
- NullRuntimeConfig.cs
- XamlHostingSectionGroup.cs
- DateTimeConverter2.cs
- XmlIlTypeHelper.cs
- XPathItem.cs
- StylusDownEventArgs.cs
- tooltip.cs
- ListViewInsertEventArgs.cs
- ObjectListDesigner.cs
- IImplicitResourceProvider.cs
- WinEventQueueItem.cs
- updateconfighost.cs
- TypeTypeConverter.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- NotifyInputEventArgs.cs
- XmlStringTable.cs
- TableRowGroupCollection.cs
- SimpleType.cs