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
- SqlClientWrapperSmiStream.cs
- PanelDesigner.cs
- NativeMethods.cs
- ManagementDateTime.cs
- StaticExtensionConverter.cs
- ImageSource.cs
- SerialErrors.cs
- CounterSetInstance.cs
- FloatUtil.cs
- ScopelessEnumAttribute.cs
- ByteFacetDescriptionElement.cs
- OdbcDataReader.cs
- PackUriHelper.cs
- EncryptedKey.cs
- XComponentModel.cs
- UnsafeNativeMethodsMilCoreApi.cs
- CheckBoxRenderer.cs
- DataObjectMethodAttribute.cs
- QueryException.cs
- PropertyGridEditorPart.cs
- XsdCachingReader.cs
- UIntPtr.cs
- ProxyManager.cs
- HotSpot.cs
- ContentElement.cs
- Constraint.cs
- StylusPlugin.cs
- ImageField.cs
- AutoSizeComboBox.cs
- QilList.cs
- PropertyChangedEventManager.cs
- DataServiceHostWrapper.cs
- SafeLocalAllocation.cs
- RotateTransform3D.cs
- MSAANativeProvider.cs
- TextBoxBase.cs
- CodeFieldReferenceExpression.cs
- CodeDOMProvider.cs
- MetadataItemCollectionFactory.cs
- TouchesCapturedWithinProperty.cs
- StoreContentChangedEventArgs.cs
- RequestStatusBarUpdateEventArgs.cs
- PropertyGeneratedEventArgs.cs
- SkinIDTypeConverter.cs
- odbcmetadatafactory.cs
- TextRunCacheImp.cs
- NavigationWindowAutomationPeer.cs
- Vector.cs
- SqlServer2KCompatibilityAnnotation.cs
- ProcessProtocolHandler.cs
- StopStoryboard.cs
- ConstraintStruct.cs
- StrongNameUtility.cs
- UInt32Storage.cs
- JoinSymbol.cs
- ReliableSessionBindingElement.cs
- CachedPathData.cs
- Mutex.cs
- BitmapEditor.cs
- CallbackHandler.cs
- RequestNavigateEventArgs.cs
- RTTypeWrapper.cs
- TextCollapsingProperties.cs
- DependencyObjectPropertyDescriptor.cs
- ContentType.cs
- SoapTypeAttribute.cs
- WinEventHandler.cs
- ActionFrame.cs
- CompressStream.cs
- PasswordRecovery.cs
- XslNumber.cs
- SendSecurityHeader.cs
- ToolStripHighContrastRenderer.cs
- Border.cs
- LinearQuaternionKeyFrame.cs
- GenericsInstances.cs
- TextFormatter.cs
- ProfileSettings.cs
- AsyncCompletedEventArgs.cs
- XmlException.cs
- PointLight.cs
- AssociationSet.cs
- BrowserDefinitionCollection.cs
- ToolBarOverflowPanel.cs
- TextModifierScope.cs
- WebContext.cs
- ListMarkerSourceInfo.cs
- ColorMap.cs
- StorageMappingItemLoader.cs
- PageVisual.cs
- DesignerVerb.cs
- hresults.cs
- ProfileInfo.cs
- SystemTcpConnection.cs
- QueryContinueDragEvent.cs
- WebBrowserHelper.cs
- ToolStripDropTargetManager.cs
- ExpressionEvaluator.cs
- Utils.cs
- DataTable.cs