Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Mail / SmtpNtlmAuthenticationModule.cs / 1305376 / SmtpNtlmAuthenticationModule.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.Mail
{
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Security.Permissions;
using System.Security.Authentication.ExtendedProtection;
//
#if MAKE_MAILCLIENT_PUBLIC
internal
#else
internal
#endif
class SmtpNtlmAuthenticationModule : ISmtpAuthenticationModule
{
Hashtable sessions = new Hashtable();
internal SmtpNtlmAuthenticationModule()
{
}
#region ISmtpAuthenticationModule Members
// Security this method will access NetworkCredential properties that demand UnmanagedCode and Environment Permission
[EnvironmentPermission(SecurityAction.Assert, Unrestricted=true)]
[SecurityPermission(SecurityAction.Assert, Flags=SecurityPermissionFlag.UnmanagedCode)]
public Authorization Authenticate(string challenge, NetworkCredential credential, object sessionCookie, string spn, ChannelBinding channelBindingToken)
{
if(Logging.On)Logging.Enter(Logging.Web, this, "Authenticate", null);
try {
lock (this.sessions)
{
NTAuthentication clientContext = this.sessions[sessionCookie] as NTAuthentication;
if (clientContext == null)
{
if(credential == null){
return null;
}
this.sessions[sessionCookie] =
clientContext =
new NTAuthentication(false, "Ntlm", credential, spn, ContextFlags.Connection, channelBindingToken);
}
string resp = clientContext.GetOutgoingBlob(challenge);
if (!clientContext.IsCompleted)
{
return new Authorization(resp, false);
}
else
{
this.sessions.Remove(sessionCookie);
return new Authorization(resp, true);
}
}
} finally {
if(Logging.On)Logging.Exit(Logging.Web, this, "Authenticate", null);
}
}
public string AuthenticationType
{
get
{
return "ntlm";
}
}
public void CloseContext(object sessionCookie) {
// This is a no-op since the context is not
// kept open by this module beyond auth completion.
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Net.Mail
{
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Security.Permissions;
using System.Security.Authentication.ExtendedProtection;
//
#if MAKE_MAILCLIENT_PUBLIC
internal
#else
internal
#endif
class SmtpNtlmAuthenticationModule : ISmtpAuthenticationModule
{
Hashtable sessions = new Hashtable();
internal SmtpNtlmAuthenticationModule()
{
}
#region ISmtpAuthenticationModule Members
// Security this method will access NetworkCredential properties that demand UnmanagedCode and Environment Permission
[EnvironmentPermission(SecurityAction.Assert, Unrestricted=true)]
[SecurityPermission(SecurityAction.Assert, Flags=SecurityPermissionFlag.UnmanagedCode)]
public Authorization Authenticate(string challenge, NetworkCredential credential, object sessionCookie, string spn, ChannelBinding channelBindingToken)
{
if(Logging.On)Logging.Enter(Logging.Web, this, "Authenticate", null);
try {
lock (this.sessions)
{
NTAuthentication clientContext = this.sessions[sessionCookie] as NTAuthentication;
if (clientContext == null)
{
if(credential == null){
return null;
}
this.sessions[sessionCookie] =
clientContext =
new NTAuthentication(false, "Ntlm", credential, spn, ContextFlags.Connection, channelBindingToken);
}
string resp = clientContext.GetOutgoingBlob(challenge);
if (!clientContext.IsCompleted)
{
return new Authorization(resp, false);
}
else
{
this.sessions.Remove(sessionCookie);
return new Authorization(resp, true);
}
}
} finally {
if(Logging.On)Logging.Exit(Logging.Web, this, "Authenticate", null);
}
}
public string AuthenticationType
{
get
{
return "ntlm";
}
}
public void CloseContext(object sessionCookie) {
// This is a no-op since the context is not
// kept open by this module beyond auth completion.
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeRegistryKey.cs
- Int32KeyFrameCollection.cs
- LinearGradientBrush.cs
- Screen.cs
- Msec.cs
- WrapperEqualityComparer.cs
- XmlEventCache.cs
- MenuItem.cs
- SkinBuilder.cs
- OptimalBreakSession.cs
- RelatedView.cs
- ConfigXmlElement.cs
- ServiceXNameTypeConverter.cs
- ExpressionBuilderContext.cs
- XmlCharacterData.cs
- EndPoint.cs
- CodeLabeledStatement.cs
- FontCollection.cs
- Vector.cs
- XpsException.cs
- ScriptControlDescriptor.cs
- MemberAssignmentAnalysis.cs
- RbTree.cs
- TagPrefixCollection.cs
- ArgumentDirectionHelper.cs
- IsolatedStorageFilePermission.cs
- DictionaryBase.cs
- InkPresenterAutomationPeer.cs
- ChtmlTextWriter.cs
- EpmContentDeSerializer.cs
- TrackingProfileSerializer.cs
- TextBox.cs
- DetailsViewRow.cs
- FieldNameLookup.cs
- WebServiceClientProxyGenerator.cs
- GestureRecognitionResult.cs
- RequestQueryParser.cs
- TextBox.cs
- ExternalFile.cs
- DuplexChannelFactory.cs
- SafeArchiveContext.cs
- Win32MouseDevice.cs
- PageStatePersister.cs
- DebuggerAttributes.cs
- SecurityPolicySection.cs
- ToolStripSplitStackLayout.cs
- InvokeMethod.cs
- TagPrefixInfo.cs
- AuthenticateEventArgs.cs
- DefaultPropertyAttribute.cs
- DataServiceException.cs
- XmlILConstructAnalyzer.cs
- AnimatedTypeHelpers.cs
- LambdaCompiler.cs
- DataGridViewLinkCell.cs
- QueueProcessor.cs
- StorageMappingFragment.cs
- XmlDataDocument.cs
- FileDialogCustomPlace.cs
- ExpressionVisitor.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- ListViewContainer.cs
- KernelTypeValidation.cs
- GifBitmapEncoder.cs
- WebEventTraceProvider.cs
- ConfigurationException.cs
- ListCollectionView.cs
- ByteFacetDescriptionElement.cs
- FilteredXmlReader.cs
- TextParagraphProperties.cs
- SequenceNumber.cs
- PrintControllerWithStatusDialog.cs
- DataGridViewCellStyleConverter.cs
- altserialization.cs
- SendMailErrorEventArgs.cs
- TextParagraphView.cs
- TextBoxDesigner.cs
- BufferedStream.cs
- BamlTreeUpdater.cs
- TextLineBreak.cs
- ProgressBarBrushConverter.cs
- JsonFormatWriterGenerator.cs
- Hex.cs
- UserCancellationException.cs
- JsonDataContract.cs
- QilGeneratorEnv.cs
- SelectionWordBreaker.cs
- ToolTipAutomationPeer.cs
- BuildProvider.cs
- SqlUtil.cs
- ContractDescription.cs
- WebPartCloseVerb.cs
- MarkupWriter.cs
- BStrWrapper.cs
- RoleGroup.cs
- TraversalRequest.cs
- DependencyProperty.cs
- WebPartDisplayModeCancelEventArgs.cs
- EventPropertyMap.cs
- ComPersistableTypeElementCollection.cs