Tôi khá xanh với các dịch vụ web và WCF và tôi đang sử dụng xác thực tích hợp Windows - làm cách nào để nhận tên người dùng trên giao diện phía máy chủ? Tôi tin rằng tôi phải thực hiện một hành vi tùy chỉnh, hoặc có lẽ một cái gì đó với WCF phiên? Mọi manh mối sẽ cực kỳ tiện dụng.Nhận tên người dùng Windows từ phía máy chủ WCF
Trả lời
Dưới đây là một đoạn mã dịch vụ cho thấy làm thế nào bạn có thể lấy và sử dụng WindowsIdentity liên quan đến việc gọi của một dịch vụ WCF.
Mã này giả định rằng bạn chấp nhận hầu hết các giá trị mặc định với cấu hình của mình. Nó sẽ làm việc mà không có bất kỳ vấn đề với các ống được đặt tên hoặc ràng buộc Net TCP.
p.Demand() sẽ xác định xem người dùng có nằm trong nhóm cửa sổ được chỉ định bởi biến permissionGroup hay không.
private static void DemandManagerPermission()
{
// Verify the use has authority to proceed
string permissionGroup = ConfigurationManager.AppSettings["ManagerPermissionGroup"];
if (string.IsNullOrEmpty(permissionGroup))
throw new FaultException("Group permissions not set for access control.");
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
var p = new PrincipalPermission(ServiceSecurityContext.Current.WindowsIdentity.Name, permissionGroup, true);
p.Demand();
}
bạn đã thử WindowsIdentity.GetCurrent();
chưa?
Điều đó cho biết danh tính dịch vụ đang chạy dưới - không phải là nhận dạng người dùng đang gọi dịch vụ – Cocowalla
Cố gắng nhìn vào ServiceSecurityContext.Current.WindowsIdentity
Để có được tên người dùng gọi WCF Service:
var callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;
- 1. Tên người dùng WCF không có giấy chứng nhận
- 2. WCF: Cách nhận IP máy chủ hoặc tên máy chủ
- 3. WCF Xác thực hỗn hợp Tên người dùng và WIndows
- 4. Xác thực nhập của người dùng, phía máy khách hoặc phía máy chủ? [PHP/JS]
- 5. Cách xác nhận đăng nhập ứng dụng Facebook phía máy khách từ phía máy chủ
- 6. Xác thực người dùng G + ở phía máy chủ, sau khi đăng nhập phía máy khách
- 7. Cách nhận đặc quyền người dùng hiện tại trong MS Dynamics CRM ở phía máy chủ
- 8. C# asp.net nhận tên người dùng
- 9. Nhận tên người dùng Windows của người dùng hiện tại bằng cách sử dụng php?
- 10. Xác thực Windows - Nhận tên người dùng hiện tại
- 11. Nhận tên người dùng hiện tại bằng C++ trên Windows
- 12. Tên người dùng/mật khẩu máy chủ HSQLDB
- 13. Nhận tên người dùng Windows đã đăng nhập được kết hợp với máy tính để bàn
- 14. TFS nhận người dùng theo tên
- 15. WCF + Thông tin người dùng
- 16. Nhận tên người dùng/mật khẩu của người dùng đã đăng nhập trong Windows
- 17. Nhận tên hiển thị của người dùng từ WindowsIdentity
- 18. SSPI: tên nguyên tắc người dùng WCF client
- 19. Gửi yêu cầu ứng dụng từ phía máy chủ
- 20. signalR - nhận tên người dùng
- 21. Cách xác thực người dùng phía máy chủ bằng Passport JS?
- 22. Tại sao dịch vụ WCF có tên từ chối máy khách Windows?
- 23. Cách kiểm tra xem người dùng Django vẫn chỉ đăng nhập từ phía máy khách?
- 24. Cài đặt dịch vụ windows trên máy từ xa bằng tên người dùng đã cho
- 25. chụp tên người dùng windows trong yêu cầu mvc asp.net
- 26. Làm cách nào để tạo phía máy chủ người dùng trong Meteor?
- 27. Sử dụng bộ nhớ phía máy chủ Meteor cho hàng ngàn người dùng đồng thời
- 28. Đăng xuất người dùng khỏi máy chủ
- 29. Bạn có thể nhận được tên người dùng Windows (AD) trong PHP không?
- 30. Cách nhận tên người dùng không có tên miền
Lệnh p.Demand sẽ yêu cầu 'Thread.CurrentPrincipal' nằm trong vai trò được chỉ định VÀ có cùng tên người dùng là' ServiceSecurityContext.Current .WindowsIdentity.Name'. – Joe