Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / Selectors / WindowsUserNameSecurityTokenAuthenticator.cs / 1305376 / 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 ReadOnlyCollectionValidateUserNamePasswordCore(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(), SecurityUtils.AuthTypeBasic); WindowsClaimSet claimSet = new WindowsClaimSet(windowsIdentity, SecurityUtils.AuthTypeBasic, 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. //----------------------------------------------------------- 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(), SecurityUtils.AuthTypeBasic); WindowsClaimSet claimSet = new WindowsClaimSet(windowsIdentity, SecurityUtils.AuthTypeBasic, 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ZipFileInfo.cs
- Msec.cs
- StringComparer.cs
- DetailsViewInsertedEventArgs.cs
- CacheVirtualItemsEvent.cs
- BindingEditor.xaml.cs
- RouteItem.cs
- SafeRegistryHandle.cs
- TextTreeTextElementNode.cs
- X500Name.cs
- SocketInformation.cs
- CalloutQueueItem.cs
- CodeNamespaceCollection.cs
- WebPartTransformer.cs
- CompilerInfo.cs
- MonthChangedEventArgs.cs
- WindowsPrincipal.cs
- TextParaClient.cs
- WhileDesigner.cs
- StylusPlugInCollection.cs
- GridViewHeaderRowPresenter.cs
- BindingGroup.cs
- FileLevelControlBuilderAttribute.cs
- SecurityTokenValidationException.cs
- XmlSchemaAnyAttribute.cs
- SHA512Cng.cs
- FlatButtonAppearance.cs
- DetailsViewCommandEventArgs.cs
- RestHandlerFactory.cs
- WorkflowServiceAttributesTypeConverter.cs
- TextLine.cs
- InfoCardX509Validator.cs
- DaylightTime.cs
- XmlSerializer.cs
- StoryFragments.cs
- OdbcTransaction.cs
- DataReaderContainer.cs
- EncodingTable.cs
- DbConnectionStringCommon.cs
- TriggerBase.cs
- _UncName.cs
- PanelStyle.cs
- ZipPackagePart.cs
- SchemaMerger.cs
- ScrollChangedEventArgs.cs
- Action.cs
- XmlProcessingInstruction.cs
- BrowserTree.cs
- InputReferenceExpression.cs
- SrgsDocument.cs
- SessionStateSection.cs
- VScrollBar.cs
- TemplatePropertyEntry.cs
- ConfigUtil.cs
- EntityDataSourceDataSelection.cs
- HtmlInputImage.cs
- LogExtent.cs
- MasterPageBuildProvider.cs
- RuleInfoComparer.cs
- TextRangeProviderWrapper.cs
- StreamGeometry.cs
- ConfigurationSettings.cs
- DeviceFilterEditorDialog.cs
- ProcessStartInfo.cs
- MediaPlayer.cs
- DbConnectionClosed.cs
- EnumUnknown.cs
- MethodToken.cs
- EventHandlerList.cs
- PrintPreviewControl.cs
- StylusCaptureWithinProperty.cs
- InstanceLockQueryResult.cs
- FaultPropagationQuery.cs
- WebServiceAttribute.cs
- EdmConstants.cs
- DSACryptoServiceProvider.cs
- DecoratedNameAttribute.cs
- MenuItem.cs
- FloaterParagraph.cs
- MimeMapping.cs
- InvokeBase.cs
- XmlIncludeAttribute.cs
- SpecularMaterial.cs
- MetadataSource.cs
- ValueProviderWrapper.cs
- CqlIdentifiers.cs
- Stack.cs
- CommandDevice.cs
- PlainXmlWriter.cs
- BindableAttribute.cs
- DynamicObject.cs
- HttpHandlerActionCollection.cs
- NumberFormatter.cs
- PointLight.cs
- HttpTransportSecurityElement.cs
- WebPartConnectionsConnectVerb.cs
- FileDataSourceCache.cs
- WebZone.cs
- MsmqMessageSerializationFormat.cs
- BitmapEncoder.cs