Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / Mail / SmtpLoginAuthenticationModule.cs / 2 / 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;
#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)
{
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.ASCII.GetBytes(userName)), false);
}
else
{
this.sessions.Remove(sessionCookie);
//
return new Authorization(Convert.ToBase64String(System.Text.Encoding.ASCII.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
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlTypesSchemaImporter.cs
- ProgressChangedEventArgs.cs
- Shape.cs
- ItemsControl.cs
- TableDetailsCollection.cs
- HttpsHostedTransportConfiguration.cs
- MarkupWriter.cs
- FileInfo.cs
- DesignerActionItem.cs
- TriggerAction.cs
- CodeVariableDeclarationStatement.cs
- DesignerVerbCollection.cs
- Grid.cs
- RequestCachePolicyConverter.cs
- PolicyManager.cs
- FixedDocument.cs
- FixedTextBuilder.cs
- ToolStripItem.cs
- XmlAtomicValue.cs
- Encoder.cs
- RelationshipFixer.cs
- BitmapFrameEncode.cs
- CacheForPrimitiveTypes.cs
- BodyWriter.cs
- SettingsSection.cs
- TableCell.cs
- EntityDataSourceMemberPath.cs
- entityreference_tresulttype.cs
- SessionPageStateSection.cs
- XamlPoint3DCollectionSerializer.cs
- ImageIndexConverter.cs
- IncrementalReadDecoders.cs
- SectionXmlInfo.cs
- IRCollection.cs
- TransformCollection.cs
- PairComparer.cs
- TextRunTypographyProperties.cs
- BaseContextMenu.cs
- HideDisabledControlAdapter.cs
- Underline.cs
- MetadataArtifactLoader.cs
- IndexingContentUnit.cs
- DropShadowEffect.cs
- VersionedStream.cs
- WmlValidatorAdapter.cs
- _NestedMultipleAsyncResult.cs
- MetadataCacheItem.cs
- CodeMemberField.cs
- BuilderPropertyEntry.cs
- CSharpCodeProvider.cs
- GlyphingCache.cs
- InvalidComObjectException.cs
- ClientSettings.cs
- Converter.cs
- SettingsProviderCollection.cs
- XmlSchemaDocumentation.cs
- BamlRecordReader.cs
- ManagedIStream.cs
- RouteParser.cs
- BindingBase.cs
- SafeHandle.cs
- LoginDesignerUtil.cs
- QueryCacheManager.cs
- ChangeTracker.cs
- IdleTimeoutMonitor.cs
- RoutedUICommand.cs
- ReadOnlyDataSource.cs
- HtmlDocument.cs
- DynamicValidatorEventArgs.cs
- unsafenativemethodstextservices.cs
- CalendarItem.cs
- QilChoice.cs
- DataGrid.cs
- ProxyAssemblyNotLoadedException.cs
- BooleanToVisibilityConverter.cs
- FastEncoderWindow.cs
- UriTemplateTrieNode.cs
- RuleInfoComparer.cs
- ContainerVisual.cs
- WizardStepBase.cs
- Viewport2DVisual3D.cs
- HTTPAPI_VERSION.cs
- SerializationInfoEnumerator.cs
- SQLRoleProvider.cs
- Buffer.cs
- EntityKeyElement.cs
- DockPanel.cs
- PermissionSet.cs
- RijndaelManaged.cs
- ToolStripScrollButton.cs
- EntityDataSourceColumn.cs
- UnknownWrapper.cs
- ConnectionsZone.cs
- DeviceContext.cs
- MatrixConverter.cs
- DispatcherHooks.cs
- WebPartZoneBase.cs
- CodeConstructor.cs
- HttpServerVarsCollection.cs
- EntityClassGenerator.cs