Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / Mail / SmtpLoginAuthenticationModule.cs / 1305376 / SmtpLoginAuthenticationModule.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 SmtpLoginAuthenticationModule : ISmtpAuthenticationModule
{
Hashtable sessions = new Hashtable();
internal SmtpLoginAuthenticationModule()
{
}
#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)
{
NetworkCredential cachedCredential = sessions[sessionCookie] as NetworkCredential;
if (cachedCredential == null)
{
if (credential == null || credential is SystemNetworkCredential)
{
return null;
}
sessions[sessionCookie] = credential;
string userName = credential.UserName;
string domain = credential.Domain;
if (domain!=null && domain.Length > 0) {
userName = domain + "\\" + userName;
}
//
return new Authorization(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userName)), false);
}
else
{
this.sessions.Remove(sessionCookie);
//
return new Authorization(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(cachedCredential.Password)), true);
}
}
} finally {
if(Logging.On)Logging.Exit(Logging.Web, this, "Authenticate", null);
}
}
public string AuthenticationType
{
get
{
return "login";
}
}
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 SmtpLoginAuthenticationModule : ISmtpAuthenticationModule
{
Hashtable sessions = new Hashtable();
internal SmtpLoginAuthenticationModule()
{
}
#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)
{
NetworkCredential cachedCredential = sessions[sessionCookie] as NetworkCredential;
if (cachedCredential == null)
{
if (credential == null || credential is SystemNetworkCredential)
{
return null;
}
sessions[sessionCookie] = credential;
string userName = credential.UserName;
string domain = credential.Domain;
if (domain!=null && domain.Length > 0) {
userName = domain + "\\" + userName;
}
//
return new Authorization(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(userName)), false);
}
else
{
this.sessions.Remove(sessionCookie);
//
return new Authorization(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(cachedCredential.Password)), true);
}
}
} finally {
if(Logging.On)Logging.Exit(Logging.Web, this, "Authenticate", null);
}
}
public string AuthenticationType
{
get
{
return "login";
}
}
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
- SQLDecimalStorage.cs
- ConfigXmlComment.cs
- ReadOnlyDataSource.cs
- ArithmeticException.cs
- CompressedStack.cs
- IISUnsafeMethods.cs
- EdmTypeAttribute.cs
- UnknownBitmapEncoder.cs
- SafeEventLogWriteHandle.cs
- ProjectionNode.cs
- DataViewManager.cs
- DesignerAutoFormat.cs
- BStrWrapper.cs
- MatrixTransform.cs
- SortFieldComparer.cs
- CodeTryCatchFinallyStatement.cs
- Rect.cs
- ObjectStateManager.cs
- FileUpload.cs
- OdbcDataAdapter.cs
- BulletedList.cs
- SubpageParagraph.cs
- ToolStripSettings.cs
- MemberAccessException.cs
- StoryFragments.cs
- DashStyle.cs
- EmptyStringExpandableObjectConverter.cs
- CodeDomComponentSerializationService.cs
- AssemblyCollection.cs
- EmptyControlCollection.cs
- NativeMethods.cs
- MatrixAnimationUsingKeyFrames.cs
- AmbientLight.cs
- AssociationTypeEmitter.cs
- Msec.cs
- MobileControlPersister.cs
- ApplicationContext.cs
- EntityModelBuildProvider.cs
- SoapTransportImporter.cs
- UidPropertyAttribute.cs
- PropagatorResult.cs
- RelationshipConverter.cs
- _ConnectionGroup.cs
- BamlMapTable.cs
- ValueSerializer.cs
- SortedDictionary.cs
- ThicknessAnimation.cs
- PageAdapter.cs
- _AutoWebProxyScriptHelper.cs
- ListDesigner.cs
- HostAdapter.cs
- WeakHashtable.cs
- NameTable.cs
- ScrollItemProviderWrapper.cs
- TitleStyle.cs
- WriteLineDesigner.xaml.cs
- DocumentAutomationPeer.cs
- JapaneseCalendar.cs
- AppDomain.cs
- MatrixCamera.cs
- ComNativeDescriptor.cs
- XmlParserContext.cs
- MergeLocalizationDirectives.cs
- MenuCommand.cs
- ChildTable.cs
- Serializer.cs
- DirectoryInfo.cs
- KeyConstraint.cs
- TokenBasedSet.cs
- SeverityFilter.cs
- WriteableBitmap.cs
- Type.cs
- AssemblyCache.cs
- LostFocusEventManager.cs
- GetIndexBinder.cs
- HyperLinkColumn.cs
- LinkedList.cs
- PageRequestManager.cs
- DataComponentGenerator.cs
- DeferredSelectedIndexReference.cs
- XmlElementAttribute.cs
- ChangeConflicts.cs
- FlowDocumentReaderAutomationPeer.cs
- TimersDescriptionAttribute.cs
- AutomationPropertyInfo.cs
- XmlNodeList.cs
- Typography.cs
- XmlSchemaCompilationSettings.cs
- TimelineGroup.cs
- SqlErrorCollection.cs
- ToolStripControlHost.cs
- DashStyle.cs
- TranslateTransform3D.cs
- AsyncCodeActivityContext.cs
- GuidTagList.cs
- DbConnectionPool.cs
- TypeDelegator.cs
- Vector.cs
- SystemUdpStatistics.cs
- WebSysDescriptionAttribute.cs