Tengo una aplicación .NET (combinación de C# y VB.NET) en la que me gustaría mostrar un cuadro de diálogo de inicio de sesión de Windows (o mi propio cuadro de diálogo) y autenticar al usuario utilizando la Autenticación de Windows. Según el requisito, tengo que pedirle al usuario que se autentique después de AL MENOS un minuto de estar inactivo. Preferiría una forma .NET nativa de hacer Autenticación de Windows, pero estoy interesado en otras formas ...Autenticación de Windows en .NET
Respuesta
para autenticar a un usuario, puede usar el método ValidateCredential del PrincipalContext. Asegúrese de agregar la referencia System.DirectoryServices.AccountManagement
.
//If you are validating on a domain
PrincipalContext pcon = new PrincipalContext(ContextType.Domain);
if(pcon.ValidateCredential(txtUsername.Text,
txtPassword.Text,
ContextOptions.Negotiate))
{
//User is authenticated
}
Si usted no está validando contra un dominio, Consulta otras ContextType
. También puede usar otra opción para validar las credenciales (ContextOptions
).
Encontré lo siguiente y pensé que lo agregaría para completarlo. ¡Todavía me gusta la respuesta de Gabriel!
Private Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As LogonType, ByVal dwLogonProvider As Integer, ByRef phToken As IntPtr) As Integer
Private Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal hObject As IntPtr) As Boolean
Public Enum LogonType As Integer
LOGON32_LOGON_INTERACTIVE = 2
LOGON32_LOGON_NETWORK = 3
LOGON32_LOGON_BATCH = 4
LOGON32_LOGON_SERVICE = 5
LOGON32_LOGON_UNLOCK = 7
LOGON32_LOGON_NETWORK_CLEARTEXT = 8
LOGON32_LOGON_NEW_CREDENTIALS = 9
End Enum
Public Function IsAuthenticated(ByVal Username As String, ByVal Password As String, Optional ByVal Domain As String = "") As Boolean
Dim Token As New IntPtr
LogonUser(Username, Domain, Password, LogonType.LOGON32_LOGON_INTERACTIVE, 0, Token)
CloseHandle(Token)
If Token.ToInt32 <> 0 Then Return True
End Function
¿Por qué usar código no administrado cuando puede hacer todo con código administrado? –
Porque el código administrado no está disponible en .NET framework 2.0 – Denis
- 1. Encabezados de autenticación de Windows sin .NET. ¿Posible?
- 2. autenticación de Windows vs autenticación de formularios
- 3. Autenticación de Windows integrada
- 4. Servicio WCF alojado de IIS + autenticación de Windows en IIS + TransportCredentialOnly/autenticación de Windows en basicHttpBinding
- 5. .NET WebApi Autenticación
- 6. Autenticación básica de Windows Azure
- 7. JMeter con Autenticación de Windows?
- 8. Omitir la autenticación de Windows
- 9. Autenticación de Windows GINA personalizada
- 10. autenticación de Windows no funciona en ie7
- 11. Autenticación de formularios de mezcla con autenticación de Windows
- 12. La autenticación de Windows no funciona
- 13. Autenticación Proxy en .NET - para API externa
- 14. IIS 7.5 Autenticación de Windows no funciona en Chrome
- 15. Gestión de sesiones con autenticación de Windows
- 16. Paquete personalizado de Autenticación de Windows
- 17. ¿Cuál es la diferencia: Autenticación de Windows, Autenticación de pasaportes y Autenticación de formularios?
- 18. Mono a SQL Server con Windows autenticación
- 19. Autenticación integrada de Windows (NTLM) frente a Windows integrada (Kerberos)
- 20. Roles disponibles con Autenticación de Windows
- 21. ASP.NET Formularios mixtos/Autenticación de Windows
- 22. Usando la autenticación de Windows con php?
- 23. MVC3 Autenticación de Windows anula User.Identity
- 24. IIS 7 - Autenticación de Windows no funciona
- 25. Autenticación de Windows con ASP.NET MVC
- 26. Windows API Borrar los tokens de autenticación
- 27. Autenticación de Windows para Intranet/Internet
- 28. Usando el violín con Autenticación de Windows
- 29. autenticación de Windows: negociar, ntlm y kerberos
- 30. Autenticación de Windows con Python y urllib2
Aunque esto suena como la mejor manera de hacerlo, acaba de descubrir que estas clases no están disponibles para .NET 2.0. – Denis