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
- CroppedBitmap.cs
- CompilationSection.cs
- GridLength.cs
- ModifierKeysConverter.cs
- BamlBinaryReader.cs
- ActivityDesignerResources.cs
- MD5Cng.cs
- PointLightBase.cs
- Geometry3D.cs
- MailWebEventProvider.cs
- RadioButtonPopupAdapter.cs
- DBBindings.cs
- XPathCompileException.cs
- Ipv6Element.cs
- SessionParameter.cs
- TagMapCollection.cs
- DataGridViewRowPrePaintEventArgs.cs
- SharedUtils.cs
- InputReferenceExpression.cs
- AssociationSetMetadata.cs
- ControlUtil.cs
- Section.cs
- IdentityManager.cs
- Literal.cs
- ImageBrush.cs
- ResolveCriteriaCD1.cs
- BinaryObjectWriter.cs
- MediaContextNotificationWindow.cs
- UnauthorizedWebPart.cs
- WebPartConnectionsCancelEventArgs.cs
- MdImport.cs
- CatalogPartChrome.cs
- ObjectRef.cs
- Size.cs
- PermissionAttributes.cs
- FileVersionInfo.cs
- FormViewUpdateEventArgs.cs
- HttpCapabilitiesEvaluator.cs
- DLinqDataModelProvider.cs
- EncoderParameter.cs
- EntryIndex.cs
- AssemblyNameEqualityComparer.cs
- ComboBoxHelper.cs
- TraceLog.cs
- IImplicitResourceProvider.cs
- ColorConvertedBitmapExtension.cs
- ConnectionProviderAttribute.cs
- RsaElement.cs
- MouseGestureConverter.cs
- WindowCollection.cs
- XmlWrappingReader.cs
- SafeCryptoHandles.cs
- DependencyPropertyConverter.cs
- ApplicationFileParser.cs
- TextTreeRootTextBlock.cs
- StyleCollectionEditor.cs
- LogLogRecordEnumerator.cs
- SimpleMailWebEventProvider.cs
- WorkflowOwnershipException.cs
- Ops.cs
- TreeNode.cs
- HtmlElementErrorEventArgs.cs
- StoreAnnotationsMap.cs
- SamlConstants.cs
- UpdateException.cs
- AutomationElement.cs
- Int16AnimationUsingKeyFrames.cs
- SearchForVirtualItemEventArgs.cs
- ImageClickEventArgs.cs
- EntityDataSourceDesigner.cs
- DbProviderConfigurationHandler.cs
- MachineKeySection.cs
- XhtmlBasicPageAdapter.cs
- rsa.cs
- ResourceDictionaryCollection.cs
- TraceUtility.cs
- ClrProviderManifest.cs
- SynchronizedCollection.cs
- XmlCollation.cs
- ModuleConfigurationInfo.cs
- Path.cs
- InternalUserCancelledException.cs
- AutomationAttributeInfo.cs
- TemplateParser.cs
- MSG.cs
- ConnectionPoint.cs
- WebResourceUtil.cs
- FixedSOMGroup.cs
- RichTextBoxAutomationPeer.cs
- IResourceProvider.cs
- Thickness.cs
- XmlReturnReader.cs
- PropertyReferenceExtension.cs
- FileRegion.cs
- DataSvcMapFile.cs
- AnimationClockResource.cs
- HtmlShim.cs
- EllipseGeometry.cs
- IncrementalReadDecoders.cs
- Pair.cs