Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StringFreezingAttribute.cs
- ArraySortHelper.cs
- CustomErrorsSection.cs
- GridItemPattern.cs
- ModelItemCollection.cs
- ReadOnlyHierarchicalDataSource.cs
- ObjectContext.cs
- MethodBuilder.cs
- DataGridColumnDropSeparator.cs
- SoapAttributeAttribute.cs
- EntityType.cs
- BindingExpressionUncommonField.cs
- CacheDependency.cs
- DesignerLinkAdapter.cs
- Constants.cs
- Compiler.cs
- SymmetricKeyWrap.cs
- SchemaAttDef.cs
- ValidationRule.cs
- COM2Enum.cs
- SafeLibraryHandle.cs
- StringUtil.cs
- WsatAdminException.cs
- LowerCaseStringConverter.cs
- DocumentOrderQuery.cs
- DataGridViewColumnEventArgs.cs
- BooleanKeyFrameCollection.cs
- RecognizedAudio.cs
- DesignerVerb.cs
- MSG.cs
- CatalogZoneDesigner.cs
- MarginsConverter.cs
- DbConnectionPoolOptions.cs
- StringOutput.cs
- DatasetMethodGenerator.cs
- WebPartsPersonalizationAuthorization.cs
- CursorConverter.cs
- DbException.cs
- HybridWebProxyFinder.cs
- JsonEnumDataContract.cs
- GeometryCollection.cs
- FontWeightConverter.cs
- SystemIPInterfaceProperties.cs
- SingleTagSectionHandler.cs
- MouseDevice.cs
- MethodCallConverter.cs
- TreeViewDesigner.cs
- BrowsableAttribute.cs
- SoapHeaders.cs
- StateManagedCollection.cs
- WinFormsSecurity.cs
- KnownTypesHelper.cs
- CommandConverter.cs
- ImageField.cs
- SoapExtensionTypeElementCollection.cs
- DiagnosticSection.cs
- HtmlTextArea.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- Binding.cs
- XsdValidatingReader.cs
- PageThemeCodeDomTreeGenerator.cs
- SystemIdentity.cs
- RemoteWebConfigurationHostStream.cs
- MissingManifestResourceException.cs
- TableCell.cs
- CommonDialog.cs
- DesignerDataSchemaClass.cs
- AutomationElement.cs
- AspProxy.cs
- GridItemPattern.cs
- ResourceDictionaryCollection.cs
- SystemTcpStatistics.cs
- HostingPreferredMapPath.cs
- OnOperation.cs
- HelpKeywordAttribute.cs
- MetricEntry.cs
- Cell.cs
- ViewCellSlot.cs
- ArrayItemReference.cs
- X509CertificateEndpointIdentity.cs
- TypeBuilderInstantiation.cs
- ReflectPropertyDescriptor.cs
- RelationshipFixer.cs
- ButtonFieldBase.cs
- ControlTemplate.cs
- SystemTcpConnection.cs
- RoleService.cs
- RadioButtonBaseAdapter.cs
- BamlRecordReader.cs
- DataObjectAttribute.cs
- XpsPartBase.cs
- SessionStateContainer.cs
- SQLInt64Storage.cs
- DataGridViewButtonColumn.cs
- TypeToken.cs
- GetPageCompletedEventArgs.cs
- Serializer.cs
- ProtocolElementCollection.cs
- FullTextBreakpoint.cs
- CultureSpecificStringDictionary.cs