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
- __FastResourceComparer.cs
- FixedSOMLineRanges.cs
- CellQuery.cs
- Ticks.cs
- EntitySqlQueryBuilder.cs
- ComplexPropertyEntry.cs
- FixedBufferAttribute.cs
- UnknownWrapper.cs
- TemplateInstanceAttribute.cs
- ToolStripDropTargetManager.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- SponsorHelper.cs
- HwndHostAutomationPeer.cs
- XPathNodePointer.cs
- SQLUtility.cs
- ParserExtension.cs
- ButtonColumn.cs
- GlobalAllocSafeHandle.cs
- PropertyItemInternal.cs
- NotifyParentPropertyAttribute.cs
- InboundActivityHelper.cs
- JavaScriptString.cs
- Ticks.cs
- RoutedEventArgs.cs
- Or.cs
- webeventbuffer.cs
- DataGridViewRowPostPaintEventArgs.cs
- ScriptServiceAttribute.cs
- SQLChars.cs
- ColorAnimationUsingKeyFrames.cs
- MatrixUtil.cs
- RefreshResponseInfo.cs
- Expander.cs
- LicenseException.cs
- Set.cs
- FixedSOMLineCollection.cs
- UIElement3D.cs
- URL.cs
- AuthenticationConfig.cs
- ContractHandle.cs
- NotifyParentPropertyAttribute.cs
- ReaderWriterLockWrapper.cs
- ThreadStaticAttribute.cs
- UIPermission.cs
- RuntimeResourceSet.cs
- EntityCommandDefinition.cs
- RSAPKCS1SignatureFormatter.cs
- DatagridviewDisplayedBandsData.cs
- Timer.cs
- LinkedResourceCollection.cs
- PropertyDescriptorComparer.cs
- DbBuffer.cs
- _KerberosClient.cs
- PointAnimationClockResource.cs
- ZipIOExtraFieldElement.cs
- SelectionItemProviderWrapper.cs
- EllipseGeometry.cs
- XPathConvert.cs
- XmlMembersMapping.cs
- TextPointerBase.cs
- XmlCDATASection.cs
- WriteFileContext.cs
- XmlWrappingReader.cs
- WebUtil.cs
- CommandDevice.cs
- SqlTriggerContext.cs
- Membership.cs
- IdnMapping.cs
- EncryptedData.cs
- RuleAction.cs
- InvalidFilterCriteriaException.cs
- SortAction.cs
- BrowserDefinition.cs
- X509UI.cs
- EditBehavior.cs
- MimeParameterWriter.cs
- ConfigurationManagerHelperFactory.cs
- HttpProfileGroupBase.cs
- TreeViewEvent.cs
- PartitionResolver.cs
- SqlMetaData.cs
- StoreAnnotationsMap.cs
- GeneralTransform.cs
- TemplateControlParser.cs
- UnsafeNativeMethods.cs
- SystemIPInterfaceStatistics.cs
- Viewport2DVisual3D.cs
- SupportedAddressingMode.cs
- DeploymentSection.cs
- TextRange.cs
- SwitchAttribute.cs
- DeferredTextReference.cs
- DeclaredTypeValidator.cs
- SoapInteropTypes.cs
- XsdBuildProvider.cs
- ThreadInterruptedException.cs
- RtfFormatStack.cs
- ReversePositionQuery.cs
- KerberosTicketHashIdentifierClause.cs
- TaskFormBase.cs