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
- ISFClipboardData.cs
- PagedDataSource.cs
- DropSource.cs
- FixUpCollection.cs
- OleDbRowUpdatingEvent.cs
- StackOverflowException.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- SessionStateSection.cs
- Latin1Encoding.cs
- OracleParameterBinding.cs
- controlskin.cs
- SqlDataSourceConnectionPanel.cs
- CoTaskMemHandle.cs
- BinarySerializer.cs
- HttpRequestWrapper.cs
- ZipIOModeEnforcingStream.cs
- VectorConverter.cs
- RangeValuePatternIdentifiers.cs
- Lease.cs
- NetNamedPipeSecurity.cs
- CodeCompileUnit.cs
- RegexGroup.cs
- UpdateException.cs
- CheckBoxFlatAdapter.cs
- Avt.cs
- HorizontalAlignConverter.cs
- SiteMapPath.cs
- Matrix.cs
- StorageEntitySetMapping.cs
- RectIndependentAnimationStorage.cs
- CalendarDayButton.cs
- WindowsSpinner.cs
- RenderData.cs
- PixelFormat.cs
- View.cs
- ZipPackage.cs
- SamlEvidence.cs
- WebPartTransformerCollection.cs
- DrawingContextWalker.cs
- TableCellAutomationPeer.cs
- WebScriptServiceHost.cs
- LabelAutomationPeer.cs
- Types.cs
- AnnotationResourceCollection.cs
- ElementAction.cs
- CodeNamespaceCollection.cs
- CredentialCache.cs
- MarkupCompilePass2.cs
- baseaxisquery.cs
- PiiTraceSource.cs
- ReadOnlyAttribute.cs
- BaseCAMarshaler.cs
- OutputCacheSettings.cs
- Avt.cs
- XamlTypeMapperSchemaContext.cs
- SettingsProviderCollection.cs
- DependencyPropertyAttribute.cs
- PrivilegeNotHeldException.cs
- SqlConnectionHelper.cs
- MutexSecurity.cs
- Expressions.cs
- ByteKeyFrameCollection.cs
- SolidBrush.cs
- MobileUITypeEditor.cs
- DesigntimeLicenseContextSerializer.cs
- HttpApplicationFactory.cs
- MetadataCollection.cs
- ADMembershipProvider.cs
- ProtocolsSection.cs
- HttpAsyncResult.cs
- ConvertersCollection.cs
- MarkupCompilePass1.cs
- MetadataArtifactLoader.cs
- HintTextConverter.cs
- QueryFunctions.cs
- SqlTransaction.cs
- Operator.cs
- UrlMappingsSection.cs
- LinqDataSourceDeleteEventArgs.cs
- LinkAreaEditor.cs
- COM2ExtendedTypeConverter.cs
- Frame.cs
- Pool.cs
- PolicyStatement.cs
- TypeNameConverter.cs
- BindingMemberInfo.cs
- NetworkCredential.cs
- IconConverter.cs
- XPathException.cs
- DesignerDataColumn.cs
- Light.cs
- DetailsViewCommandEventArgs.cs
- IApplicationTrustManager.cs
- Dictionary.cs
- NamespaceQuery.cs
- MergeLocalizationDirectives.cs
- ServiceNameCollection.cs
- PartialTrustHelpers.cs
- ComponentDispatcher.cs
- HorizontalAlignConverter.cs