Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Selectors / WindowsUserNameSecurityTokenAuthenticator.cs / 1 / WindowsUserNameSecurityTokenAuthenticator.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.IdentityModel.Selectors
{
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.IdentityModel.Tokens;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Principal;
public class WindowsUserNameSecurityTokenAuthenticator : UserNameSecurityTokenAuthenticator
{
bool includeWindowsGroups;
public WindowsUserNameSecurityTokenAuthenticator()
: this(WindowsClaimSet.DefaultIncludeWindowsGroups)
{
}
public WindowsUserNameSecurityTokenAuthenticator(bool includeWindowsGroups)
{
this.includeWindowsGroups = includeWindowsGroups;
}
protected override ReadOnlyCollection ValidateUserNamePasswordCore(string userName, string password)
{
string domain = null;
string[] strings = userName.Split('\\');
if (strings.Length != 1)
{
if (strings.Length != 2 || String.IsNullOrEmpty(strings[0]))
{
// Only support one slash and domain cannot be empty (consistent with windowslogon).
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.IncorrectUserNameFormat));
}
// This is the downlevel case - domain\userName
userName = strings[1];
domain = strings[0];
}
const uint LOGON32_PROVIDER_DEFAULT = 0;
const uint LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
SafeCloseHandle tokenHandle = null;
try
{
if (!NativeMethods.LogonUser(userName, domain, password, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, out tokenHandle))
{
int error = Marshal.GetLastWin32Error();
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityTokenValidationException(SR.GetString(SR.FailLogonUser, userName), new Win32Exception(error)));
}
WindowsIdentity windowsIdentity = new WindowsIdentity(tokenHandle.DangerousGetHandle());
WindowsClaimSet claimSet = new WindowsClaimSet(windowsIdentity, this.includeWindowsGroups, false);
return SecurityUtils.CreateAuthorizationPolicies(claimSet, claimSet.ExpirationTime);
}
finally
{
if (tokenHandle != null)
tokenHandle.Close();
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IssuedTokenClientBehaviorsElement.cs
- WhileDesigner.cs
- SignatureDescription.cs
- FixedFindEngine.cs
- QuaternionKeyFrameCollection.cs
- ThaiBuddhistCalendar.cs
- XPathMessageFilterElement.cs
- ColorTranslator.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- MessageQueueKey.cs
- Stylesheet.cs
- PublishLicense.cs
- PrefixHandle.cs
- IdentityReference.cs
- ReturnType.cs
- ToolStripDropDownClosedEventArgs.cs
- CategoryGridEntry.cs
- SqlCacheDependencyDatabaseCollection.cs
- TreeNode.cs
- FlowDocumentReader.cs
- EntityCommandExecutionException.cs
- TcpConnectionPool.cs
- WarningException.cs
- UnknownBitmapEncoder.cs
- QueryInterceptorAttribute.cs
- VisualStyleElement.cs
- EnumCodeDomSerializer.cs
- CounterSampleCalculator.cs
- DashStyle.cs
- SoapIncludeAttribute.cs
- ExternalFile.cs
- TextServicesLoader.cs
- TextParaClient.cs
- AsymmetricSignatureDeformatter.cs
- AssemblyGen.cs
- Misc.cs
- SiteOfOriginPart.cs
- XmlSchemaParticle.cs
- Pair.cs
- Mapping.cs
- OdbcHandle.cs
- CacheOutputQuery.cs
- ThreadStartException.cs
- VirtualizedCellInfoCollection.cs
- MouseButton.cs
- Soap.cs
- AsyncOperationManager.cs
- OutputCacheProfileCollection.cs
- CompilerTypeWithParams.cs
- WebBrowsableAttribute.cs
- HashAlgorithm.cs
- MergeFilterQuery.cs
- SubclassTypeValidatorAttribute.cs
- DbModificationClause.cs
- Lease.cs
- Pool.cs
- ListView.cs
- FileCodeGroup.cs
- Error.cs
- InternalPermissions.cs
- BitmapImage.cs
- Inflater.cs
- Translator.cs
- CharEnumerator.cs
- BlobPersonalizationState.cs
- DataBoundControlHelper.cs
- BamlBinaryWriter.cs
- LinearGradientBrush.cs
- _SSPIWrapper.cs
- SystemEvents.cs
- DataGridViewTextBoxEditingControl.cs
- ObjectSelectorEditor.cs
- CodeArrayIndexerExpression.cs
- DefaultTypeArgumentAttribute.cs
- WorkflowNamespace.cs
- ToolStripDropDownClosedEventArgs.cs
- PartialCachingAttribute.cs
- SpinWait.cs
- NamespaceCollection.cs
- SimpleFileLog.cs
- ActivityDefaults.cs
- ToolTipAutomationPeer.cs
- TemplateBaseAction.cs
- JsonMessageEncoderFactory.cs
- MarkupCompilePass1.cs
- ComAdminInterfaces.cs
- ComEventsSink.cs
- BufferAllocator.cs
- BitmapEffectGroup.cs
- ConfigXmlSignificantWhitespace.cs
- SQLBoolean.cs
- DisableDpiAwarenessAttribute.cs
- MoveSizeWinEventHandler.cs
- Adorner.cs
- AnnotationHelper.cs
- ResizeGrip.cs
- FileUpload.cs
- listitem.cs
- Context.cs
- StylusTip.cs