Tôi có một ứng dụng .NET (kết hợp của C# và VB.NET) nơi tôi muốn hiển thị hộp thoại Windows Login (hoặc hộp thoại của riêng tôi) và xác thực người dùng bằng Windows Authentication. Theo yêu cầu, tôi cần yêu cầu người dùng xác thực sau AT LEAST một phút không hoạt động. Tôi muốn có một cách tự nhiên .NET để thực hiện Xác thực Windows nhưng quan tâm đến các cách khác ...Xác thực Windows trong .NET
Trả lời
để xác thực người dùng, bạn có thể sử dụng phương thức ValidateCredential của PrincipalContext. Đảm bảo thêm tham chiếu 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
}
Nếu bạn không xác nhận chống lại một tên miền, kiểm tra ContextType
khác. Bạn cũng có thể sử dụng tùy chọn khác để xác thực thông tin xác thực (số ContextOptions
).
Tìm thấy thông tin sau và tôi đã thêm nó để hoàn thành. Tôi vẫn thích câu trả lời của 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
Tại sao bạn sử dụng mã không được quản lý khi bạn có thể thực hiện mọi thứ với mã được quản lý? –
Vì mã được quản lý không có trong .NET framework 2.0 – Denis
- 1. Cách xác thực LDAP trong .NET
- 2. Xác thực WebApi .NET
- 3. Xác thực Windows Watin
- 4. Tắt xác thực trong @ Html.TextBoxFor trong .Net
- 5. JMeter với Xác thực Windows?
- 6. Xác thực Windows thủ công
- 7. Cách xác thực với Visual Studio Team Services bằng xác thực cơ bản mới từ Dịch vụ Windows .NET?
- 8. Xác thực Windows không hoạt động
- 9. API Bluetooth trong Windows/.Net?
- 10. Hiểu về Xác thực Windows WCF
- 11. Nodejs hoặc ExpressJS Xác thực Windows
- 12. Xác thực Windows với ASP.NET MVC
- 13. Mã xác thực Windows API rõ ràng
- 14. Xác thực Windows cho Intranet/Internet
- 15. Xác thực Windows IIS trước Anonymous
- 16. Nhận thông tin xác thực được lưu trong PowerShell từ Trình quản lý thông tin xác thực của Windows 7
- 17. .net WebService, bỏ qua xác thực ssl!
- 18. Hộp xác thực Windows xác thực yêu cầu nhiều lần trong IE8 và IIS7
- 19. Lỗi xác thực của Windows IIS
- 20. Xác thực Windows Pass 2007 qua Excel
- 21. Xác thực proxy trong thư viện Net C++ của POCO
- 22. Xác thực/Mã hóa Windows trong WCF Với NetTcpBinding
- 23. Cách sử dụng Xác thực Windows trong WPF?
- 24. Xác minh chữ ký xác thực khi thực thi ứng dụng .NET
- 25. Lấy thông tin xác thực mạng từ người dùng hiện tại trong ứng dụng xác thực Windows
- 26. Vấn đề xác thực Windows với Safari 5.x trong Windows 7
- 27. Xác thực Windows MVC ASP.NET trên các hình thức xác thực
- 28. Trang web mạng intranet ASP.NET yêu cầu thông tin xác thực - Xác thực Windows
- 29. ASP.NET xác thực vấn đề trên IIS7 - User.Identity.Name là trống cho Windows xác thực
- 30. Xác thực một thuộc tính duy nhất với Thư viện xác thực thông thạo cho .Net
Mặc dù điều này nghe giống như cách tốt nhất để làm điều đó - chỉ phát hiện ra các lớp này không có sẵn cho .NET 2.0. – Denis