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
- EditorAttribute.cs
- WebBrowserPermission.cs
- ContextBase.cs
- ClientFormsAuthenticationCredentials.cs
- DesigntimeLicenseContext.cs
- Int32Collection.cs
- ExpandSegmentCollection.cs
- CollectionBase.cs
- ProfilePropertyNameValidator.cs
- InputReferenceExpression.cs
- NamedObject.cs
- SynchronizingStream.cs
- SaveFileDialog.cs
- ExecutionContext.cs
- SystemDropShadowChrome.cs
- MemberHolder.cs
- sqlnorm.cs
- SchemaCollectionPreprocessor.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- DataGridViewCellCollection.cs
- EventSinkHelperWriter.cs
- HelpEvent.cs
- DataRowCollection.cs
- ComponentChangingEvent.cs
- BaseCodePageEncoding.cs
- StateDesigner.Helpers.cs
- DataSourceView.cs
- SmiEventSink_Default.cs
- WindowsTokenRoleProvider.cs
- IMembershipProvider.cs
- InputLanguageManager.cs
- SqlNotificationRequest.cs
- Matrix.cs
- ViewStateException.cs
- MergeLocalizationDirectives.cs
- WsatServiceCertificate.cs
- dataprotectionpermissionattribute.cs
- CalendarDataBindingHandler.cs
- SystemException.cs
- Convert.cs
- InstanceDataCollectionCollection.cs
- MsmqSecureHashAlgorithm.cs
- ListBindingConverter.cs
- PathTooLongException.cs
- OLEDB_Enum.cs
- ArrayWithOffset.cs
- StateMachineSubscription.cs
- FakeModelItemImpl.cs
- PackageRelationship.cs
- ResourcesChangeInfo.cs
- ReadWriteSpinLock.cs
- HierarchicalDataTemplate.cs
- State.cs
- unsafenativemethodsother.cs
- SerialReceived.cs
- ExpressionLexer.cs
- FormatterConverter.cs
- RuleRef.cs
- TextElementCollection.cs
- MarshalByRefObject.cs
- UserInitiatedNavigationPermission.cs
- ArgumentException.cs
- UserControl.cs
- EditorBrowsableAttribute.cs
- CfgArc.cs
- GridEntryCollection.cs
- XmlCDATASection.cs
- XmlQualifiedName.cs
- SettingsPropertyWrongTypeException.cs
- PrintControllerWithStatusDialog.cs
- PerfService.cs
- XmlMapping.cs
- HtmlLink.cs
- AsyncOperationManager.cs
- RoamingStoreFileUtility.cs
- RangeValidator.cs
- OperatingSystem.cs
- HttpListenerResponse.cs
- HtmlInputReset.cs
- IsolatedStorage.cs
- Point4DConverter.cs
- DbParameterCollection.cs
- SortedList.cs
- MenuItemAutomationPeer.cs
- WsdlHelpGeneratorElement.cs
- ObjectQuery.cs
- XNameTypeConverter.cs
- ScopeCollection.cs
- MethodImplAttribute.cs
- OpenFileDialog.cs
- HitTestParameters.cs
- XmlSchemaComplexContentExtension.cs
- ModelTreeEnumerator.cs
- LayoutEvent.cs
- ComPlusServiceLoader.cs
- UndoManager.cs
- Util.cs
- ContentDisposition.cs
- VBIdentifierDesigner.xaml.cs
- MetadataProperty.cs