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
- Binding.cs
- ExpandSegment.cs
- ButtonChrome.cs
- Pens.cs
- CompensationDesigner.cs
- ExpressionReplacer.cs
- ElementUtil.cs
- Error.cs
- Wizard.cs
- BindingValueChangedEventArgs.cs
- DataTable.cs
- TypeBuilderInstantiation.cs
- Publisher.cs
- RtfNavigator.cs
- SHA384.cs
- QuerySelectOp.cs
- SymLanguageVendor.cs
- TextBreakpoint.cs
- PerfCounterSection.cs
- GeometryGroup.cs
- SpecialNameAttribute.cs
- VerticalAlignConverter.cs
- TextViewElement.cs
- AdRotator.cs
- WhitespaceRuleReader.cs
- UnmanagedMemoryStreamWrapper.cs
- DbProviderFactory.cs
- Encoding.cs
- DataObjectEventArgs.cs
- ipaddressinformationcollection.cs
- SemanticAnalyzer.cs
- BooleanToVisibilityConverter.cs
- ResourceExpression.cs
- BatchStream.cs
- DocumentPageViewAutomationPeer.cs
- SafeProcessHandle.cs
- documentsequencetextcontainer.cs
- DataObjectAttribute.cs
- UIElementPropertyUndoUnit.cs
- TemplateXamlTreeBuilder.cs
- LogArchiveSnapshot.cs
- IFlowDocumentViewer.cs
- FocusManager.cs
- XsdDateTime.cs
- AddToCollection.cs
- Section.cs
- ReflectionPermission.cs
- NetPeerTcpBinding.cs
- ClientData.cs
- RegexStringValidator.cs
- PermissionSetEnumerator.cs
- TextServicesCompartmentEventSink.cs
- BamlTreeUpdater.cs
- InfoCardServiceInstallComponent.cs
- XmlBoundElement.cs
- MarkupObject.cs
- CodeDirectoryCompiler.cs
- SortKey.cs
- Select.cs
- VideoDrawing.cs
- PerformanceCounterPermission.cs
- DiagnosticTraceSource.cs
- FieldAccessException.cs
- ZipIOCentralDirectoryFileHeader.cs
- ReversePositionQuery.cs
- HttpCapabilitiesSectionHandler.cs
- GeometryValueSerializer.cs
- IteratorFilter.cs
- XmlSignificantWhitespace.cs
- TraceHelpers.cs
- DataObjectPastingEventArgs.cs
- HtmlSelect.cs
- XmlnsDictionary.cs
- TextPenaltyModule.cs
- StaticFileHandler.cs
- GrowingArray.cs
- GCHandleCookieTable.cs
- ArgumentException.cs
- PreservationFileReader.cs
- FileDialogCustomPlacesCollection.cs
- ipaddressinformationcollection.cs
- HwndSubclass.cs
- XmlCharCheckingWriter.cs
- InternalBase.cs
- ExpressionVisitor.cs
- DispatcherHookEventArgs.cs
- SamlSecurityToken.cs
- StackOverflowException.cs
- BuildProviderAppliesToAttribute.cs
- DataGridViewComboBoxEditingControl.cs
- oledbmetadatacolumnnames.cs
- _TransmitFileOverlappedAsyncResult.cs
- AutomationEvent.cs
- AdornerLayer.cs
- FunctionDetailsReader.cs
- SiteMapDataSourceView.cs
- PriorityBindingExpression.cs
- TextPatternIdentifiers.cs
- DataGridViewTextBoxColumn.cs
- TransformDescriptor.cs