Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Selectors / SecurityTokenProvider.cs / 1 / SecurityTokenProvider.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.IdentityModel.Selectors { using System.IdentityModel.Diagnostics; using System.IdentityModel.Tokens; using System.Threading; public abstract class SecurityTokenProvider { protected SecurityTokenProvider() { } public virtual bool SupportsTokenRenewal { get { return false; } } public virtual bool SupportsTokenCancellation { get { return false; } } public SecurityToken GetToken(TimeSpan timeout) { SecurityToken token = this.GetTokenCore(timeout); if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.TokenProviderUnableToGetToken, this))); } return token; } public IAsyncResult BeginGetToken(TimeSpan timeout, AsyncCallback callback, object state) { return this.BeginGetTokenCore(timeout, callback, state); } public SecurityToken EndGetToken(IAsyncResult result) { if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result"); } SecurityToken token = this.EndGetTokenCore(result); if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.TokenProviderUnableToGetToken, this))); } return token; } public SecurityToken RenewToken(TimeSpan timeout, SecurityToken tokenToBeRenewed) { if (tokenToBeRenewed == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("tokenToBeRenewed"); } SecurityToken token = this.RenewTokenCore(timeout, tokenToBeRenewed); if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.TokenProviderUnableToRenewToken, this))); } return token; } public IAsyncResult BeginRenewToken(TimeSpan timeout, SecurityToken tokenToBeRenewed, AsyncCallback callback, object state) { if (tokenToBeRenewed == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("tokenToBeRenewed"); } return this.BeginRenewTokenCore(timeout, tokenToBeRenewed, callback, state); } public SecurityToken EndRenewToken(IAsyncResult result) { if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result"); } SecurityToken token = this.EndRenewTokenCore(result); if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenException(SR.GetString(SR.TokenProviderUnableToRenewToken, this))); } return token; } public void CancelToken(TimeSpan timeout, SecurityToken token) { if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token"); } this.CancelTokenCore(timeout, token); } public IAsyncResult BeginCancelToken(TimeSpan timeout, SecurityToken token, AsyncCallback callback, object state) { if (token == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token"); } return this.BeginCancelTokenCore(timeout, token, callback, state); } public void EndCancelToken(IAsyncResult result) { if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result"); } this.EndCancelTokenCore(result); } // protected methods protected abstract SecurityToken GetTokenCore(TimeSpan timeout); protected virtual SecurityToken RenewTokenCore(TimeSpan timeout, SecurityToken tokenToBeRenewed) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.TokenRenewalNotSupported, this))); } protected virtual void CancelTokenCore(TimeSpan timeout, SecurityToken token) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.GetString(SR.TokenCancellationNotSupported, this))); } protected virtual IAsyncResult BeginGetTokenCore(TimeSpan timeout, AsyncCallback callback, object state) { SecurityToken token = this.GetToken(timeout); return new SecurityTokenAsyncResult(token, callback, state); } protected virtual SecurityToken EndGetTokenCore(IAsyncResult result) { return SecurityTokenAsyncResult.End(result); } protected virtual IAsyncResult BeginRenewTokenCore(TimeSpan timeout, SecurityToken tokenToBeRenewed, AsyncCallback callback, object state) { SecurityToken token = this.RenewTokenCore(timeout, tokenToBeRenewed); return new SecurityTokenAsyncResult(token, callback, state); } protected virtual SecurityToken EndRenewTokenCore(IAsyncResult result) { return SecurityTokenAsyncResult.End(result); } protected virtual IAsyncResult BeginCancelTokenCore(TimeSpan timeout, SecurityToken token, AsyncCallback callback, object state) { this.CancelToken(timeout, token); return new SecurityTokenAsyncResult(null, callback, state); } protected virtual void EndCancelTokenCore(IAsyncResult result) { SecurityTokenAsyncResult.End(result); } class SecurityTokenAsyncResult : IAsyncResult { SecurityToken token; object state; ManualResetEvent manualResetEvent; object thisLock = new object(); public SecurityTokenAsyncResult(SecurityToken token, AsyncCallback callback, object state) { this.token = token; this.state = state; if (callback != null) { try { callback(this); } #pragma warning suppress 56500 catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) throw; throw DiagnosticUtility.ExceptionUtility.ThrowHelperCallback(SR.GetString(SR.AsyncCallbackException), e); } } } public object AsyncState { get { return this.state; } } public WaitHandle AsyncWaitHandle { get { if (this.manualResetEvent != null) { return this.manualResetEvent; } lock (thisLock) { if (this.manualResetEvent == null) { this.manualResetEvent = new ManualResetEvent(true); } } return this.manualResetEvent; } } public bool CompletedSynchronously { get { return true; } } public bool IsCompleted { get { return true; } } public static SecurityToken End(IAsyncResult result) { if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result"); } SecurityTokenAsyncResult completedResult = result as SecurityTokenAsyncResult; if (completedResult == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.InvalidAsyncResult), "result")); } return completedResult.token; } } } } // 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
- HtmlTableCellCollection.cs
- TypedRowHandler.cs
- TableCellCollection.cs
- WebBaseEventKeyComparer.cs
- ResourceReferenceExpression.cs
- XsltLoader.cs
- DbDataReader.cs
- PageBreakRecord.cs
- RootProjectionNode.cs
- DetailsViewUpdatedEventArgs.cs
- DataGridTextBox.cs
- MsmqIntegrationChannelListener.cs
- BitSet.cs
- WindowsIPAddress.cs
- OpenTypeCommon.cs
- DataGridViewElement.cs
- MetadataItemSerializer.cs
- EncryptedPackage.cs
- _ConnectStream.cs
- XmlSerializerNamespaces.cs
- dbenumerator.cs
- ValidateNames.cs
- GridItemProviderWrapper.cs
- StylusPlugin.cs
- SqlBulkCopyColumnMapping.cs
- Error.cs
- MessageEncodingBindingElement.cs
- ListCollectionView.cs
- RemotingConfiguration.cs
- SoapEnumAttribute.cs
- LinkLabel.cs
- WebServiceData.cs
- ConfigurationElement.cs
- RegexCompilationInfo.cs
- MemberDomainMap.cs
- GcHandle.cs
- FloaterParagraph.cs
- DataGridViewComboBoxEditingControl.cs
- PolicyStatement.cs
- FileChangeNotifier.cs
- SqlDataRecord.cs
- FixedSOMPageElement.cs
- SQLUtility.cs
- DesignerRegionMouseEventArgs.cs
- FixedTextSelectionProcessor.cs
- RightsManagementEncryptionTransform.cs
- EmptyEnumerable.cs
- odbcmetadatacolumnnames.cs
- shaperfactoryquerycachekey.cs
- ToolboxItemFilterAttribute.cs
- DelegatedStream.cs
- NGCSerializationManager.cs
- LookupNode.cs
- ProfileParameter.cs
- GeometryModel3D.cs
- PlainXmlDeserializer.cs
- StringDictionary.cs
- Command.cs
- WhitespaceRuleLookup.cs
- Keywords.cs
- DataGridViewImageCell.cs
- DebugTraceHelper.cs
- ExpressionBindingsDialog.cs
- TileBrush.cs
- GridViewRow.cs
- CookielessHelper.cs
- HttpCacheVary.cs
- securitycriticaldata.cs
- BufferModesCollection.cs
- GlyphCache.cs
- BinaryMethodMessage.cs
- DrawingAttributesDefaultValueFactory.cs
- SerialStream.cs
- FormViewPageEventArgs.cs
- PropertyMetadata.cs
- WsatServiceAddress.cs
- RowBinding.cs
- CodeTypeReferenceSerializer.cs
- ModuleConfigurationInfo.cs
- ValidationRule.cs
- HtmlUtf8RawTextWriter.cs
- DataControlField.cs
- DataControlLinkButton.cs
- XPathNavigator.cs
- X509Utils.cs
- ExpressionList.cs
- PersonalizationStateInfoCollection.cs
- FieldAccessException.cs
- ClientUrlResolverWrapper.cs
- DataControlFieldCollection.cs
- Roles.cs
- DropShadowEffect.cs
- ProfilePropertySettings.cs
- TdsParserSessionPool.cs
- RawUIStateInputReport.cs
- NonPrimarySelectionGlyph.cs
- streamingZipPartStream.cs
- _IPv6Address.cs
- _Connection.cs
- DispatcherSynchronizationContext.cs