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
- QueryCreatedEventArgs.cs
- CatalogPartCollection.cs
- DateTimeFormatInfoScanner.cs
- InvalidComObjectException.cs
- LateBoundBitmapDecoder.cs
- UserControl.cs
- LinkDescriptor.cs
- XPathExpr.cs
- SurrogateEncoder.cs
- UrlAuthFailedErrorFormatter.cs
- DiscoveryDocument.cs
- MULTI_QI.cs
- ToolboxItemFilterAttribute.cs
- Substitution.cs
- JsonReaderDelegator.cs
- FrameworkElementFactoryMarkupObject.cs
- CodeAccessSecurityEngine.cs
- ApplicationDirectoryMembershipCondition.cs
- isolationinterop.cs
- RegexStringValidator.cs
- MD5CryptoServiceProvider.cs
- SolidColorBrush.cs
- MultiSelector.cs
- Keyboard.cs
- ReadContentAsBinaryHelper.cs
- PriorityBinding.cs
- GCHandleCookieTable.cs
- WindowProviderWrapper.cs
- SqlExpressionNullability.cs
- EventWaitHandleSecurity.cs
- MultipleViewPattern.cs
- SqlCommand.cs
- ImageListStreamer.cs
- DesignSurfaceCollection.cs
- SupportingTokenBindingElement.cs
- Metafile.cs
- Math.cs
- XamlPoint3DCollectionSerializer.cs
- VirtualPathProvider.cs
- XmlKeywords.cs
- Visitor.cs
- Vector3D.cs
- SqlBulkCopyColumnMapping.cs
- VerificationAttribute.cs
- SyntaxCheck.cs
- RadioButtonFlatAdapter.cs
- ArrangedElement.cs
- XamlLoadErrorInfo.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- FormClosingEvent.cs
- DecoderFallback.cs
- MiniConstructorInfo.cs
- EditingCommands.cs
- GeometryDrawing.cs
- XamlFxTrace.cs
- TreeNodeCollectionEditorDialog.cs
- LicenseException.cs
- ResXBuildProvider.cs
- DebugHandleTracker.cs
- CapabilitiesState.cs
- DummyDataSource.cs
- FileNotFoundException.cs
- CookieProtection.cs
- ColorInterpolationModeValidation.cs
- AuthenticationException.cs
- WebPartTransformerCollection.cs
- SecurityChannelListener.cs
- ProviderConnectionPointCollection.cs
- SmtpClient.cs
- ToolStripDropTargetManager.cs
- DetailsViewRow.cs
- EventKeyword.cs
- ArraySortHelper.cs
- PerformanceCounterLib.cs
- ExpressionVisitor.cs
- basemetadatamappingvisitor.cs
- DataControlPagerLinkButton.cs
- TriggerActionCollection.cs
- SwitchElementsCollection.cs
- LinkGrep.cs
- RandomNumberGenerator.cs
- BitmapCacheBrush.cs
- ResourceDescriptionAttribute.cs
- CFStream.cs
- TableRowCollection.cs
- DataTrigger.cs
- SqlNotificationRequest.cs
- WebProxyScriptElement.cs
- EntryPointNotFoundException.cs
- SessionStateContainer.cs
- Soap12ServerProtocol.cs
- ResourceDictionaryCollection.cs
- AsmxEndpointPickerExtension.cs
- DirectoryNotFoundException.cs
- RuleElement.cs
- PolicyStatement.cs
- UpdatableGenericsFeature.cs
- PeerName.cs
- FormViewUpdatedEventArgs.cs
- WriterOutput.cs