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
- PrimaryKeyTypeConverter.cs
- InstanceLockLostException.cs
- SqlTypeConverter.cs
- ComboBox.cs
- ListViewGroup.cs
- UpDownEvent.cs
- PackageDigitalSignatureManager.cs
- ConstructorBuilder.cs
- SelectedCellsChangedEventArgs.cs
- IERequestCache.cs
- DaylightTime.cs
- CompositeDuplexBindingElement.cs
- HtmlElementCollection.cs
- LinqDataView.cs
- TwoPhaseCommitProxy.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ErrorHandler.cs
- Misc.cs
- GatewayIPAddressInformationCollection.cs
- MenuItemBindingCollection.cs
- CompModSwitches.cs
- Model3DCollection.cs
- ProxyGenerator.cs
- Boolean.cs
- StreamGeometry.cs
- ExpressionVisitor.cs
- WebReferencesBuildProvider.cs
- IResourceProvider.cs
- COM2PictureConverter.cs
- ObjectDisposedException.cs
- TextEditorParagraphs.cs
- DelegateHelpers.Generated.cs
- ListViewAutomationPeer.cs
- MetadataItemEmitter.cs
- Regex.cs
- TopClause.cs
- EntityDataSourceDesigner.cs
- Graphics.cs
- XmlNamespaceMappingCollection.cs
- ConfigXmlAttribute.cs
- AssemblyFilter.cs
- DataBindingExpressionBuilder.cs
- MailDefinition.cs
- UnsafeNativeMethods.cs
- BigInt.cs
- MinMaxParagraphWidth.cs
- BooleanAnimationBase.cs
- DbProviderFactoriesConfigurationHandler.cs
- AdapterDictionary.cs
- columnmapfactory.cs
- EntityViewContainer.cs
- PropertyEmitterBase.cs
- BoolExpression.cs
- DataGridViewCheckBoxCell.cs
- BindingManagerDataErrorEventArgs.cs
- HotSpotCollectionEditor.cs
- SHA512.cs
- ProfileSettingsCollection.cs
- GPRECTF.cs
- DeviceContext.cs
- XsltQilFactory.cs
- TemplateComponentConnector.cs
- DbConnectionPoolOptions.cs
- XmlILModule.cs
- VerificationAttribute.cs
- PersonalizationStateInfoCollection.cs
- PostBackTrigger.cs
- OracleNumber.cs
- DependencyPropertyAttribute.cs
- OutOfProcStateClientManager.cs
- ItemCheckEvent.cs
- RSAPKCS1SignatureFormatter.cs
- DATA_BLOB.cs
- DescriptionAttribute.cs
- InOutArgument.cs
- CommandLibraryHelper.cs
- LinkTarget.cs
- PointCollectionConverter.cs
- KnownTypes.cs
- RemoteDebugger.cs
- XmlSequenceWriter.cs
- EncoderNLS.cs
- BlurBitmapEffect.cs
- _DigestClient.cs
- X509ChainPolicy.cs
- ValidatingCollection.cs
- BrowserTree.cs
- ProgressChangedEventArgs.cs
- ViewStateModeByIdAttribute.cs
- AssociationSet.cs
- ScrollEventArgs.cs
- DataTableTypeConverter.cs
- EntityConnection.cs
- WindowsSolidBrush.cs
- SchemeSettingElement.cs
- DependencyProperty.cs
- ModuleBuilderData.cs
- SubqueryRules.cs
- DataBindEngine.cs
- GifBitmapDecoder.cs