Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / Tokens / SecurityTokenParameters.cs / 1 / SecurityTokenParameters.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Security.Tokens { using System.ServiceModel.Security; using System.ServiceModel.Channels; using System.ServiceModel; using System.Text; using System.Globalization; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; public abstract class SecurityTokenParameters { internal const SecurityTokenInclusionMode defaultInclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient; internal const SecurityTokenReferenceStyle defaultReferenceStyle = SecurityTokenReferenceStyle.Internal; internal const bool defaultRequireDerivedKeys = true; SecurityTokenInclusionMode inclusionMode = defaultInclusionMode; SecurityTokenReferenceStyle referenceStyle = defaultReferenceStyle; bool requireDerivedKeys = defaultRequireDerivedKeys; protected SecurityTokenParameters(SecurityTokenParameters other) { if (other == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("other"); this.requireDerivedKeys = other.requireDerivedKeys; this.inclusionMode = other.inclusionMode; this.referenceStyle = other.referenceStyle; } protected SecurityTokenParameters() { // empty } internal protected abstract bool HasAsymmetricKey { get; } public SecurityTokenInclusionMode InclusionMode { get { return this.inclusionMode; } set { SecurityTokenInclusionModeHelper.Validate(value); this.inclusionMode = value; } } public SecurityTokenReferenceStyle ReferenceStyle { get { return this.referenceStyle; } set { TokenReferenceStyleHelper.Validate(value); this.referenceStyle = value; } } public bool RequireDerivedKeys { get { return this.requireDerivedKeys; } set { this.requireDerivedKeys = value; } } internal protected abstract bool SupportsClientAuthentication { get; } internal protected abstract bool SupportsServerAuthentication { get; } internal protected abstract bool SupportsClientWindowsIdentity { get; } public SecurityTokenParameters Clone() { SecurityTokenParameters result = this.CloneCore(); if (result == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SecurityTokenParametersCloneInvalidResult, this.GetType().ToString()))); return result; } protected abstract SecurityTokenParameters CloneCore(); internal protected abstract SecurityKeyIdentifierClause CreateKeyIdentifierClause(SecurityToken token, SecurityTokenReferenceStyle referenceStyle); internal protected abstract void InitializeSecurityTokenRequirement(SecurityTokenRequirement requirement); internal SecurityKeyIdentifierClause CreateKeyIdentifierClause(SecurityToken token, SecurityTokenReferenceStyle referenceStyle) where TExternalClause : SecurityKeyIdentifierClause where TInternalClause : SecurityKeyIdentifierClause { if (token == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token"); SecurityKeyIdentifierClause result; switch (referenceStyle) { default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException( SR.GetString(SR.TokenDoesNotSupportKeyIdentifierClauseCreation, token.GetType().Name, referenceStyle))); case SecurityTokenReferenceStyle.External: result = token.CreateKeyIdentifierClause (); break; case SecurityTokenReferenceStyle.Internal: result = token.CreateKeyIdentifierClause (); break; } return result; } internal SecurityKeyIdentifierClause CreateGenericXmlTokenKeyIdentifierClause(SecurityToken token, SecurityTokenReferenceStyle referenceStyle) { GenericXmlSecurityToken xmlToken = token as GenericXmlSecurityToken; if (xmlToken != null) { if (referenceStyle == SecurityTokenReferenceStyle.Internal && xmlToken.InternalTokenReference != null) return xmlToken.InternalTokenReference; if (referenceStyle == SecurityTokenReferenceStyle.External && xmlToken.ExternalTokenReference != null) return xmlToken.ExternalTokenReference; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.UnableToCreateTokenReference))); } internal protected virtual bool MatchesKeyIdentifierClause(SecurityToken token, SecurityKeyIdentifierClause keyIdentifierClause, SecurityTokenReferenceStyle referenceStyle) { if (token == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token"); if (token is GenericXmlSecurityToken) { return MatchesGenericXmlTokenKeyIdentifierClause(token, keyIdentifierClause, referenceStyle); } bool result; switch (referenceStyle) { default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException( SR.GetString(SR.TokenDoesNotSupportKeyIdentifierClauseCreation, token.GetType().Name, referenceStyle))); case SecurityTokenReferenceStyle.External: if (keyIdentifierClause is LocalIdKeyIdentifierClause) result = false; else result = token.MatchesKeyIdentifierClause(keyIdentifierClause); break; case SecurityTokenReferenceStyle.Internal: result = token.MatchesKeyIdentifierClause(keyIdentifierClause); break; } return result; } internal bool MatchesGenericXmlTokenKeyIdentifierClause(SecurityToken token, SecurityKeyIdentifierClause keyIdentifierClause, SecurityTokenReferenceStyle referenceStyle) { if (token == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token"); bool result; GenericXmlSecurityToken xmlToken = token as GenericXmlSecurityToken; if (xmlToken == null) result = false; else if (referenceStyle == SecurityTokenReferenceStyle.External && xmlToken.ExternalTokenReference != null) result = xmlToken.ExternalTokenReference.Matches(keyIdentifierClause); else if (referenceStyle == SecurityTokenReferenceStyle.Internal) result = xmlToken.MatchesKeyIdentifierClause(keyIdentifierClause); else result = false; return result; } public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "{0}:", this.GetType().ToString())); sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "InclusionMode: {0}", this.inclusionMode.ToString())); sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "ReferenceStyle: {0}", this.referenceStyle.ToString())); sb.Append(String.Format(CultureInfo.InvariantCulture, "RequireDerivedKeys: {0}", this.requireDerivedKeys.ToString())); return sb.ToString(); } } } // 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
- FloaterBaseParaClient.cs
- ParameterCollection.cs
- AdornerLayer.cs
- MatrixCamera.cs
- BindToObject.cs
- SystemInformation.cs
- XmlWriterDelegator.cs
- ExtensionWindowHeader.cs
- PrintDialog.cs
- NumberFormatter.cs
- TypeContext.cs
- SafeProcessHandle.cs
- SafeWaitHandle.cs
- WindowsStreamSecurityBindingElement.cs
- GenericQueueSurrogate.cs
- ImageBrush.cs
- ConfigurationFileMap.cs
- Win32MouseDevice.cs
- HotSpotCollection.cs
- StringComparer.cs
- Translator.cs
- ZipFileInfoCollection.cs
- JournalNavigationScope.cs
- RuntimeHelpers.cs
- ToolStripOverflowButton.cs
- AsyncResult.cs
- PenThreadPool.cs
- RoleManagerSection.cs
- Resources.Designer.cs
- TreeIterators.cs
- DataSourceXmlSerializationAttribute.cs
- PhonemeEventArgs.cs
- SqlTriggerContext.cs
- LockedBorderGlyph.cs
- BitmapSizeOptions.cs
- AnnotationAdorner.cs
- BinaryFormatterWriter.cs
- _OSSOCK.cs
- AutomationElement.cs
- CodeNamespaceCollection.cs
- MSAANativeProvider.cs
- EncodingInfo.cs
- TextComposition.cs
- sqlcontext.cs
- MethodImplAttribute.cs
- ApplicationCommands.cs
- EndpointAddress.cs
- CharAnimationUsingKeyFrames.cs
- ObjectParameterCollection.cs
- OneWayChannelFactory.cs
- DispatcherFrame.cs
- prefixendpointaddressmessagefilter.cs
- ListBase.cs
- CodeTypeMember.cs
- DCSafeHandle.cs
- DataContractSerializerFaultFormatter.cs
- FixedMaxHeap.cs
- RecognizerStateChangedEventArgs.cs
- TableItemPattern.cs
- StringDictionary.cs
- ResourceDictionaryCollection.cs
- MdiWindowListItemConverter.cs
- ArraySortHelper.cs
- ScriptBehaviorDescriptor.cs
- MSAAWinEventWrap.cs
- TimersDescriptionAttribute.cs
- RuntimeResourceSet.cs
- SplitContainer.cs
- PersonalizableTypeEntry.cs
- BinaryCommonClasses.cs
- FormsAuthenticationUserCollection.cs
- DataServiceQueryOfT.cs
- UpdateExpressionVisitor.cs
- ClickablePoint.cs
- IntersectQueryOperator.cs
- EdmComplexTypeAttribute.cs
- FusionWrap.cs
- OdbcDataAdapter.cs
- ListBindingConverter.cs
- PassportAuthenticationModule.cs
- ItemsControlAutomationPeer.cs
- BitmapPalette.cs
- LineServices.cs
- DbProviderManifest.cs
- UniqueConstraint.cs
- Directory.cs
- ContentFileHelper.cs
- EventManager.cs
- XmlNodeReader.cs
- CreateUserWizard.cs
- ExpandCollapsePattern.cs
- DeobfuscatingStream.cs
- Stacktrace.cs
- LineInfo.cs
- GPPOINTF.cs
- OdbcError.cs
- SizeConverter.cs
- ProfileService.cs
- ObjectStateEntry.cs
- OdbcCommandBuilder.cs